把需要的权限抽取出来放到全局(可以放在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(); } }
动态获取权限的快速用法
最新推荐文章于 2023-12-27 09:31:27 发布
本文介绍了一种在Android应用中统一管理所需权限的方法。通过将所有权限声明在一个全局位置(BaseActivity),简化了权限请求流程。文章提供了实现代码示例,包括如何检查权限状态、请求未授予的权限以及处理权限请求结果。
447

被折叠的 条评论
为什么被折叠?



