部分机型进行运行时权限申请时不弹出授权弹框是什么情况?百分百弹出授权弹框,要不?

先看效果:


最近上架包到Googleplay的时候,由于targetSdkVersion低于26,被要求调整到26,那就调整呗。一调整,各种坑就来了。其他都是小坑。不讲。主要还是平时没当回事的运行时权限申请这块出问题了。在部分手机上checkSelfPermission完成后,如果没有权限,就会调用

requestPermissions(@NonNull final Activity activity, @NonNull final String[] permissions, final int requestCode)

来申请权限。正常情况下,这个方法一旦调用,就会弹出授权弹框。但是部分机型,却不会弹出。比如vivo,oppo,小米的部分机型。就不会,尤其是小米。即便知道没有权限,他能无限循环的申请都不弹出来。这是什么情况呢?

在做了一堆实验后如下规律(位置权限为例)。部分小米手机,首次安装app,权限都是询问状态。有些直接是允许。都不会弹出授权弹框。即便一直申请也不会弹出。网上有说要针对miui加入安装中心授权的判断。我加过了,没有用。最后看到别的app,进入可以直接弹出。这就有点好奇了。我自己的app经过大量测试,发现,要么是在五分钟后才弹出,要么就是在第二次打开app弹出。考虑了下位置权限的调用逻辑后发现:

    这部分机型,真的是只有在你调用了该部分方法的时候才会申请授权。即便你没有调用    requestPermissions()方法,也会自动弹出授权弹框。 再试了下READ_PHONE_STATE权限,也是这样。真是无语了。被这个问题困扰了一天。再次记录下。方便其他人,莫入坑。

看到没,我就是在调用申请授权之前,先去调用相应的方法。我只需要位置权限,所以只调用了这个方法。如果想用READ_PHONE_STATE权限,也需要在申请授权之前调用。如下

TelephonyManager TelephonyMgr = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);
ime = TelephonyMgr.getDeviceId();
demo下载地址: https://download.csdn.net/download/shoneworn/10508629
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值