文章目录
一、权限申请原理对话框操作回调接口 RationaleCallbacks
二、永久拒绝权限后引导设用户置权限
一、权限申请原理对话框操作回调接口 RationaleCallbacks
权限申请 对话框操作回调接口 RationaleCallbacks:
① 权限申请原理对话框 ( Rationale Dialog ) : 该对话框的作用是 , 向用户说明为什么本应用要申请该权限 , 用户拒绝权限申请后 , 再次申请会自动弹出该对话框 ;
② 对话框显示内容设置 : 如果用户之前拒绝过所申请的权限 , 再次申请就会自动弹出该对话框 , 对话框内容是如下 requestPermissions 方法的第三个参数 String rationale 的内容 ;
/** * 申请一组权限, 如果系统要求 ( 用户之前拒绝过 ) , 显示 权限申请原理对话框 , * 向用户表明申请该权限的原因 . * * @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()); }
① 接口方法 :
/** * 权限申请原理对话框处理 */ public interface RationaleCallbacks { // 用户点击确定键 , 开始申请权限 void onRationaleAccepted(int requestCode); // 用户拒绝 , 界面消失 void onRationaleDenied(int requestCode); }
二、永久拒绝权限后引导设用户置权限
永久拒绝操作 : 如果用户在权限申请时 , 选择了 “拒绝 , 不要再询问” , 这是永久拒绝了应用的权限申请 , 如下图 ;
此时就 无法在应用中申请权限了 , 只能手动引导用户前往应用设置界面 , 自行开启权限 ;
此时可以调用 pub.devrel.easypermissions.AppSettingsDialog 对话框 , 该对话框的作用是引导用户前往设置界面 , 自行为应用授权 ; 如果用户点击确定后会跳转到 设置 中的 应用信息 界面 , 在该界面中 , 用户可以在 权限 选项中 , 手动为应用授权 ;
如果用户仍选择 取消 选项 , 此时直接退出界面即可 , 最好是提示下用户 , 拒绝后的后果 ;