2017-01-29 38 views
0

读取外部存储许可在onCreate方法在版本的Android M错误

if (ContextCompat.checkSelfPermission(thisActivity, 
      Manifest.permission.READ_EXTERNAL_STORAGE) 
    != PackageManager.PERMISSION_GRANTED) { 

// Should we show an explanation? 
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, 
     Manifest.permission.READ_EXTERNAL_STORAGE)) { 


} else { 

    ActivityCompat.requestPermissions(thisActivity, 
      new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
      PERMISSION_REQUEST_CODE); 
} 

在onRequestPermissionsResult

@Override 
public void onRequestPermissionsResult(int requestCode, 
            String permissions[],int[]grantResults) { 
switch (requestCode) { 
    case PERMISSION_REQUEST_CODE: { 

     if (grantResults.length > 0 
      && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      String path = Environment.getExternalStorageState(); 

     } else { 

     } 
     return; 
    } 
} 

我已经努力尝试但都崩溃的应用程序结束。权限不被授予应用程序。为什么?我做错了什么?您的帮助将不胜感激。

+1

你能从日志发布异常时崩溃发生? –

+0

AndroidRuntime:致命例外:主要 进程:com.google.android.packageinstaller,PID:14436 java.lang.RuntimeException:无法启动活动ComponentInfo {com.google.android.packageinstaller/com.android.packageinstaller.permission。 ui.GrantPermissionsActivity}:java.lang.NullPointerException:尝试获取空数组的长度 at android.app.ActivityThread.performLaunchActivity – Abdullah

回答

0

我用这个作为我的代码,从计算器了,却忘了谁回答这个问题

public boolean hasPermission(Context context, String... permissions){ 
     for (String permission : permissions) { 
      if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { 
       return false; 
      } 
     } 
     return true; 
    } 
    int PERMISSION_ALL = 1; 
    String[] PERMISSIONS = { 
      Manifest.permission.INTERNET, 
      Manifest.permission.ACCESS_FINE_LOCATION, 
      Manifest.permission.ACCESS_NETWORK_STATE, 
      Manifest.permission.CHANGE_NETWORK_STATE, 
      Manifest.permission.WRITE_SETTINGS, 
      Manifest.permission.CAMERA, 
      Manifest.permission.RECEIVE_SMS, 
      Manifest.permission.SEND_SMS, 
      Manifest.permission.WRITE_EXTERNAL_STORAGE, 
      Manifest.permission.ACCESS_WIFI_STATE, 
      Manifest.permission.CHANGE_WIFI_STATE, 
      Manifest.permission.ACCESS_COARSE_LOCATION, 
      Manifest.permission.READ_CONTACTS}; 
    public void checkAllPermission(){ 
     if (!hasPermission(getActivity(), PERMISSIONS)){ 
      ActivityCompat.requestPermissions(getActivity(), PERMISSIONS, PERMISSION_ALL); 
     } 
    } 
} 

尝试(如修改您的需要)

+0

我曾尝试过这种代码更简单的形式,但给我同样的错误 – Abdullah

+0

是你的清单已经很好? (完整) –

+0

ntaloventi是的。 – Abdullah

相关问题