简述
本文简要记录运行时权限注意点
1、检查是否具有某种权限
// 如检查是否具有相机权限....
ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
// Packmanager 常量
// 授权
public static final int PERMISSION_GRANTED = 0;
// 未授权
public static final int PERMISSION_DENIED = -1;
2、申请权限
// 123自定义的返回码
ActivityCompat.requestPermissions(this,new String[]{
Manifest.permission.CAMERA},123);
3、用户拒绝权限显示UI让用户去申请
1.如果应用之前请求过此权限但用户拒绝了请求,此方法将返回 true
2.如果用户在过去拒绝了权限请求,并在权限请求系统对话框中选择了 Don’t ask again 选项,此方法将返回 false
用户之前已经拒绝了,但是该应用需要某种权限,需要提示用户去选择
ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.CAMERA)
4、权限申请回调
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 123){
// 权限拒绝
if (grantResults[0] != PackageManager.PERMISSION_GRANTED){
if (!ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.CAMERA)){
// 点击了不再询问弹窗
Log.e("权限", "不再询问处理....." );
}else {
// 普通的拒绝
finish();
}
}else {
// 同意权限申请的分支
detailInAction();