文章目录
- 一、权限申请原理对话框操作回调接口 RationaleCallbacks
- 二、永久拒绝权限后引导设用户置权限
一、权限申请原理对话框操作回调接口 RationaleCallbacks
权限申请 对话框操作回调接口 RationaleCallbacks:
① 权限申请原理对话框 ( Rationale Dialog ) : 该对话框的作用是 , 向用户说明为什么本应用要申请该权限 , 用户拒绝权限申请后 , 再次申请会自动弹出该对话框 ;
② 对话框显示内容设置 : 如果用户之前拒绝过所申请的权限 , 再次申请就会自动弹出该对话框 , 对话框内容是如下 requestPermissions 方法的第三个参数 String rationale 的内容 ;
代码语言:javascript复制 /**
* 申请一组权限, 如果系统要求 ( 用户之前拒绝过 ) , 显示 权限申请原理对话框 ,
* 向用户表明申请该权限的原因 .
*
* @param host 上下文对象 , 一般是 Activity.
* @param rationale 解释为什么申请改组权限的原因的信息;
* 这些信息会在用户第一次拒绝权限申请后显示在 权限申请原理对话框 中.
* @param requestCode 追踪本次权限申请的申请码 , 必须小于 256.
* @param perms 本次申请的权限 , 这是一个可变参数 .
* @see Manifest.permission
*/
public static void requestPermissions(
@NonNull Activity host, @NonNull String rationale,
int requestCode, @Size(min = 1) @NonNull String... perms) {
requestPermissions(
new PermissionRequest.Builder(host, requestCode, perms)
.setRationale(rationale)
.build());
}
① 接口方法 :
代码语言:javascript复制 /**
* 权限申请原理对话框处理
*/
public interface RationaleCallbacks {
// 用户点击确定键 , 开始申请权限
void onRationaleAccepted(int requestCode);
// 用户拒绝 , 界面消失
void onRationaleDenied(int requestCode);
}
二、永久拒绝权限后引导设用户置权限
永久拒绝操作 : 如果用户在权限申请时 , 选择了 “拒绝 , 不要再询问” , 这是永久拒绝了应用的权限申请 , 如下图 ;
此时就 无法在应用中申请权限了 , 只能手动引导用户前往应用设置界面 , 自行开启权限 ;
此时可以调用 pub.devrel.easypermissions.AppSettingsDialog 对话框 , 该对话框的作用是引导用户前往设置界面 , 自行为应用授权 ; 如果用户点击确定后会跳转到 设置 中的 应用信息 界面 , 在该界面中 , 用户可以在 权限 选项中 , 手动为应用授权 ;
如果用户仍选择 取消 选项 , 此时直接退出界面即可 , 最好是提示下用户 , 拒绝后的后果 ;