总共就几个方法
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;
*/