1. 程式人生 > >android 6.0 以上 動態申請多個許可權

android 6.0 以上 動態申請多個許可權

不囉嗦 直接上程式碼

第一步

首先在onCreate下判斷SDK版本

 if (Build.VERSION.SDK_INT >= 23) {

              //如果targetSDKVersion >= 23,那麼必須要申請到所需要的許可權,再呼叫廣點通SDK,否則廣點通SDK不會工作               checkAndRequestPermission();             } else {                 // 如果是Android6.0以下的機器,預設在安裝時獲得了所有許可權                         }

第二步

    @TargetApi(Build.VERSION_CODES.M)     private void checkAndRequestPermission() {         List<String> lackedPermission = new ArrayList<String>();         if (!(checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED)) {             lackedPermission.add(Manifest.permission.READ_PHONE_STATE);         }

if(!(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) =PackageManager.PERMISSION_GRANTED)) {             lackedPermission.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);         }

   if (!(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)) {             lackedPermission.add(Manifest.permission.ACCESS_FINE_LOCATION);         }         if (!(checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED)) {             lackedPermission.add(Manifest.permission.CAMERA);         }         // 許可權都已經有了,那麼直接呼叫SDK         if (lackedPermission.size() == 0) { 

        //操作你授權後的邏輯

        } else {             // 請求所缺少的許可權,在onRequestPermissionsResult中再看是否獲得許可權,如果獲得許可權就可以呼叫SDK,否則不要呼叫SDK。             String[] requestPermissions = new String[lackedPermission.size()];             lackedPermission.toArray(requestPermissions);             requestPermissions(requestPermissions, 1024);         }     }

第三步 查看回調結果

   @Override     public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {         super.onRequestPermissionsResult(requestCode, permissions, grantResults);         if (requestCode == 1024 && hasAllPermissionsGranted(grantResults)) {           //在此操作你接下授權後的邏輯         } else {             // 如果使用者沒有授權,那麼應該說明意圖,引導使用者去設定裡面授權。             Toast.makeText(this, "應用缺少必要的許可權!請點選\"許可權\",開啟所需要的許可權。", Toast.LENGTH_LONG).show();             Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);             intent.setData(Uri.parse("package:" + getPackageName()));             startActivity(intent);             finish();         }     }

結束;就是這麼簡單