把需要的权限抽取出来放到全局(可以放在BaseActivity): protected static final String PERMISSIONS[] = { Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO, // Manifest.permission.READ_PHONE_STATE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.CALL_PHONE};
public void requestAllPermissionsResult() { requestMultiplePermissionsResult(PERMISSIONS); }public void requestMultiplePermissionsResult(String[] permissionNames) { ArrayList<String> unGrantedPermissionList = new ArrayList<>(); for (String permission : permissionNames) { if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, permission)) { //进入到这里代表没有权限. unGrantedPermissionList.add(permission); } } String tmpList[] = new String[unGrantedPermissionList.size()]; if (!unGrantedPermissionList.isEmpty()) { ActivityCompat.requestPermissions(this, unGrantedPermissionList.toArray(tmpList), 123); } }@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //已获取权限 } else { //权限被拒绝 new AlertDialog.Builder(mCurrentContext) .setTitle("需要开启权限后才能使用") .setNegativeButton("取消", null) .setPositiveButton("去设置", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = getAppDetailSettingIntent(mCurrentContext); startActivity(intent); } }) .show(); } }
动态获取权限的快速用法
最新推荐文章于 2024-05-15 09:52:17 发布