Android6.0寫入儲存動態申請許可權
阿新 • • 發佈:2019-01-07
由於安卓6.0的限制,特殊許可權在AndroidManifest檔案中設定不起效果,需要在程式碼中動態設定。
下面的程式碼是用於申請訪問或寫入儲存的許可權,如下圖.
- 需要在AndroidManifest檔案中配置許可權。(必須)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
如果是請求拍照攝像頭的許可權則後面是CAMERA,具體程式碼下面的STORAGE響應的換成CAMERA
-----------------------------------------
- 首先判斷當前sdk是否大於6.0,是則判斷是否已經開啟了許可權,否則直接執行程式碼doCode()
- 判斷是否已經開啟許可權,如果還沒有許可權,則執行requestPermissions();
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){ if (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){ //沒有許可權則申請許可權 ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1); }else { //有許可權直接執行,docode()不用做處理 doCode(); } }else { //小於6.0,不用申請許可權,直接執行 doCode(); }
- 在活動中呼叫函式onRequestPermissionsResult()
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode){ case 1: if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){ //執行程式碼,這裡是已經申請許可權成功了,可以不用做處理 doCode(); }else{ ToastUtil.showShort(MainActivity.this,"許可權申請失敗"); } break; } }