场景:
App需要定位权限,或者读取文件权限,申请了权限,但用户拒绝了,当做对应操作的时候要检测一下有没有该权限,没有就弹出提示窗,让用户去设置
问题:
如何检测有没有对应的权限
解决方案:
//使用该方法,检测是否被授予了对应的权限
//checkSelfPermission方法中
//第一个参数是Context
//第二个参数是你清单文件里面配置的需要的权限
方法的返回结果
PackageManager.PERMISSION_GRANTED//授予权限
PackageManager.PERMISSION_DENIED//拒绝权限
ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED
例如:
//检测相机,读写文件权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
) {
//未授权时
//shouldShowRequestPermissionRationale该方法,用来显示未授权的原因
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
showMsg("你已经拒绝过一次相机权限");
}
//在这里对于需要的权限进行申请,方式有很多,这里使用的是一个第三方库
// implementation 'com.lovedise:permissiongen:0.0.6'
PermissionGen.needPermission(mContext, Constants.MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE,
new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
}
);
} else {
//已经授权时
}