动态权限申请总结
》》几个变量类型:
》》权限:Manifest.permission.READ_EXTERNAL_STORAGE(String);
》》 权限已申请和未申请:
①. 授予: PackageManager.PERMISSION_GRANTED
②. 拒绝: PackageManager.PERMISSION_DENIED
》》解释权限
// 解释权限
ActivityCompat.shouldShowRequestPermissionRationale(Activityactivity,Stringpermission)
判断是否有必要向用户解释为什么要这项权限。如果应用第一次请求过此权限,但是被用户拒绝了,则之后调用该方法将返回 true,此时就有必要向用户详细说明需要此权限的原因(个人认为此方法是可选的)。
PS: 如果应用第一次请求此权限时被用户拒绝,第二次再请求此权限时,用户勾选了权限请求对话框的“不再询问”,则此方法返回 false。如果设备规范禁止应用拥有该权限,此方法也返回 false。
》》权限判断是已授权还是已拒绝:
①.授予:PackageManager.PERMISSION_GRANTED
②.拒绝:PackageManager.PERMISSION_DENIED
ContextCompat.checkSelfPermission(context,Manifest.permission.READ_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED)
》》申请权限:
// 请求权限
ActivityCompat.requestPermissions(Activityactivity,String[]permissions,intrequestCode)
》》处理权限申请:
/**
* 处理权限请求结果
*
* @param requestCode
* 请求权限时传入的请求码,用于区别是哪一次请求的
*
* @param permissions
* 所请求的所有权限的数组
*
* @param grantResults
* 权限授予结果,和 permissions 数组参数中的权限一一对应,元素值为两种情况,如下:
* 授予: PackageManager.PERMISSION_GRANTED
* 拒绝: PackageManager.PERMISSION_DENIED
*/
@Override
public void onRequestPermissionsResult(int requestCode,Stringpermissions[],int[]grantResults) {
}