Android 7.0 获取自定义权限

private String[] permissions = {Manifest.permission.CAMERA,
      Manifest.permission.WRITE_EXTERNAL_STORAGE,
   // Manifest.permission.ACCESS_COARSE_LOCATION,
      Manifest.permission.GET_ACCOUNTS,
      Manifest.permission.ACCESS_FINE_LOCATION,
      Manifest.permission.RECORD_AUDIO,
      Manifest.permission.CALL_PHONE,
   // Manifest.permission.READ_EXTERNAL_STORAGE
};
String content[]={"拍照和录制视频权限","读写存储卡权限","获取手机账户列表权限","手机定位权限","录制音频权限","打电话权限"};
private void checkPermissions() {
   if (Build.VERSION.SDK_INT >= 23) {
      ActivityCompat.requestPermissions(this, permissions, 321);

   }
}
StringBuilder sb_error=null;
StringBuilder sb_wrong=null;

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
   super.onRequestPermissionsResult(requestCode, permissions, grantResults);
   if (requestCode == 321) {
      if (Build.VERSION.SDK_INT >= 23) {
         int index = 0;
         sb_error = new StringBuilder();
         for (int i = 0; i < permissions.length; i++) {
            /*if (permissions[i] == "Manifest.permission.READ_EXTERNAL_STORAGE" || permissions[i] == "Manifest.permission.ACCESS_COARSE_LOCATION")
              {continue;}*/
            if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
               if (shouldShowRequestPermissionRationale(permissions[i])) {
                  sb_error.append(content[i]);
                  sb_error.append(" ");
                  index++;
               }
            }
         }
         if (index != 0) {
            setAuthority(sb_error.toString());
            index = 0;
         }
      }
   }
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
   if (requestCode == 123) {
      if (Build.VERSION.SDK_INT >= 23) {
         sb_wrong = new StringBuilder();
         int index = 0;
         for (int i = 0; i < permissions.length; i++) {
            /*if (permissions[i] == "Manifest.permission.READ_EXTERNAL_STORAGE" || permissions[i] == "Manifest.permission.ACCESS_COARSE_LOCATION")
            {continue;}*/
            int checkper = ContextCompat.checkSelfPermission(GuideActivity.this, permissions[i]);
            {
               if (checkper != PackageManager.PERMISSION_GRANTED){
                  sb_wrong.append(content[i]);
               sb_wrong.append(" ");
               index++;
            }
         }
      }
         if (index != 0) {
            setAuthority(sb_wrong.toString());
            index = 0;
         } else {
            Toast.makeText(this, "获取所有权限成功", Toast.LENGTH_SHORT).show();
         }
   }
}
}

public void setAuthority(String content) {
   new AlertDialog.Builder(this)
         .setTitle("还有权限未设置")
         .setIcon(android.R.drawable.ic_dialog_info)
         .setMessage(content)
         .setPositiveButton("立即设置", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
               Intent intent = new Intent();
               intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
               Uri uri = Uri.fromParts("package", getPackageName(), null);
               intent.setData(uri);
               startActivityForResult(intent, 123);

            }
         }).setCancelable(false).show();
}

猜你喜欢

转载自blog.csdn.net/sunshine_0707/article/details/82910727
今日推荐