运行时权限

总共就几个方法

1.检查权限

ContextCompat.checkSelfPermission();
//或者,继承关系
ActivityCompat.checkSelfPermission();

//具体权限在Manifest.permission这个类中
//如: Manifest.permission.WRITE_EXTERNAL_STORAGE

2.请求权限

ActivityCompat.requestPermissions();

3.请求权限后回调

//这个方法是FragmentActivity提供的
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}


//权限有两种状态
PackageManager.PERMISSION_GRANTED
PackageManager.PERMISSION_DENIED

4.是否要提示用户引用权限的理由

//这个方法只有在api>=23时才有用(Build.VERSION_CODES.M=23)
ActivityCompat.shouldShowRequestPermissionRationale()
//这个方法的目的是在必要的情况下向用户解释为什么需要此权限,看方法名就能知道目的

/*
* |  应用安装后第一次访问,直接返回false;
* |  第一次请求权限时,用户拒绝了,下一次shouldShowRequestPermissionRationale()返回 true,这时候可以显示一些为什么需要这个权限的说明;
* |  第一次之后的请求权限时,用户拒绝了,并选择了“不再提醒”的选项时:shouldShowRequestPermissionRationale()返回 false;
* |  设备的系统设置中禁止当前应用获取这个权限的授权,shouldShowRequestPermissionRationale()返回false;
*/

你可能感兴趣的:(运行时权限)