afkT / DevUtils

:fire: ( 持续更新,目前含 300+ 工具类 ) DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。该项目尽可能的便于开发人员,快捷、高效开发安全可靠的项目。
Apache License 2.0
1.37k stars 305 forks source link

PermissionUtil禁止显示后,没有跳转到对应app权限列表 #4

Closed zhushenwudi closed 4 years ago

zhushenwudi commented 4 years ago

//PermissionActivity 内部activity

protected static void start(final Context context) {

        //源码
        Intent starter = new Intent(context, PermissionActivity.class);
        starter.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(starter);

        //可以修改为
        Uri packageURI = Uri.parse("package:" + AppUtils.getPackageName());
        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI);
        context.startActivity(intent);
    }
afkT commented 4 years ago

你好,你这个禁止显示是禁止什么操作,没有发现这个情况呢

zhushenwudi commented 4 years ago

就是deny再次跳出permission,如果想要清空已拒绝的权限记录的话,按照issue中的代码,会new一个task然后跳到PermissionActivity.class,但在测试上看到的效果只是闪了一下屏幕。callback中还是deny,我也不知道是我没有明白你这个刷新权限改变处理的含义,还是代码方面应该改变。 我自己的理解是,如果拒绝再次弹出权限窗口后,如果想要使用对应权限的功能,需要友好的提示用户手动前往设置中修改。

Uri packageURI = Uri.parse("package:" + AppUtils.getPackageName()); Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI); context.startActivity(intent);

这部分的话可以跳转到设置

afkT commented 4 years ago

嗯,我明白你的意思了, 目前是需要自己在 onDenied 回调里面调用 PermissionUtils.shouldShowRequestPermissionRationale 判断是否被拒绝,用户决定跳转或者 Dialog 提示等,我可以加一个参数, 控制是否跳转到应用设置页面去(默认 false),这样用户拒绝权限,则直接跳转到应用设置页面

关于 notifyPermissionsChange 刷新权限改变处理 ( 清空已拒绝的权限记录 ) 这个方法主要是清空已拒绝的权限记录 ( 内部节省判断操作 ), 并非清空系统拒绝的权限

将会在下个版本 ( 两天内 ) 增加该可配选项跳转应用设置页

zhushenwudi commented 4 years ago

好的,感谢