Android调app权限设置界面(适配各大手机厂商终极版本)

背景:

 

        众所周知,国内的android是在google之上,各大手机厂商加了一层,诸如MIUI、EUI,之类的系统。因此在我们开发过程中想调出某应用的权限设置页面,调出的是google原生的权限控制界面,但是我们在此页授予应用权限后,实际上应用还是没有权限,只是在google眼里,我已经给你权限了。其实,是被手机厂商系统给拦截了,通俗来讲,中国的手机厂商觉得原生的不好看,或者突出自己系统等原因,会在原生之上加一个壳子,有些东西原生可以决定,有些东西,原生决定了没有用,还是要壳子同意才行。

目的:

 

            因此我们想跳转的是各大手机厂商系统的应用权限设置界面,这就需要知道类名+包名,而且各大手机厂商的类名+包名肯定不一样,也不保证它们会一成不变。

 

在此https://www.jianshu.com/p/58c6ca8173c4文章的基础上,完善了一个工具类,经过测试:

华为:OK

小米:OK

锤子:OK

一加:OK

vivo:OK,vivo有自己的提示,再次点击后也是会跳出提示,有瑕疵,但是还可以

oppo:OK,自己会提示

魅族:暂时跳转没反应

酷派:无6.0以上的版本笑哭

中兴:OK

联想:OK

PS:

总体来讲,不敢保证肯定能跳过去的,可以采用捕获异常的方式,是在调不到该应用的权限管理页,跳到该应用详情页也可以,反正就是要引导用户在拒绝权限后可以找到在哪授予权限。

当然我这里采用的是startActivityForResult,返回时我想知道权限是否已经授予,如果授予了,那么继续干其他的事情,如果没授予,那么继续提示。

因为使用startActivityForResult若跳的是应用详情页,用户再次点击权限,其实已经跳出该活动了,再返回,再返回到我们的页面,其实并没有效果,因此考虑区分应用详情页和权限详情页

 

最终确定方案:若打开的是应用详情页,则在onResume中检测权限

 

核心代码:

    public static void GoToSetting(Activity activity){
        switch (Build.MANUFACTURER){
            case MANUFACTURER_HUAWEI://华为
                Huawei(activity);
                break;
            case MANUFACTURER_MEIZU://魅族
                Meizu(activity);
                break;
            case MANUFACTURER_XIAOMI://小米
                Xiaomi(activity);
                break;
            case MANUFACTURER_SONY://索尼
                Sony(activity);
                break;
            case MANUFACTURER_OPPO://oppo
                OPPO(activity);
                break;
            case MANUFACTURER_LG://lg
                LG(activity);
                break;
            case MANUFACTURER_LETV://乐视
                Letv(activity);
                break;
            default://其他
                try {//防止应用详情页也找不到,捕获异常后跳转到设置,这里跳转最好是两级,太多用户也
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值