Android判断应用是否具有定位权限

前言

 

 好久没有更新博客了,记录下最近的工作.

 

应用是否具有定位权限的判断

 

  网上搜了好久,都是context.checkSelfPermission 等来获取Permission_Granted等值.但是用户手动拒绝掉这个定位权限后,获取到默认也是0,很奇怪,我的项目targeSdkVersion = 22,不是6.0,没有适配权限,可能是这个问题所致.

 

直接上奇迹代码吧....

PermissionChecker.checkPermission(WiFiPunchMainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION, Process.myPid(), Process.myUid(), getPackageName()) != 0

上述这行代码可以获取到定位权限是否获取,三种情况:

1.已经有定位权限,上述返回 0;

2.询问状态,返回 -1;

3.用户手动拒绝该定位权限,返回-2;

不等于0即可满足条件,程序做后续处理即可.

 

坑,安卓开发真的有点像传统web前端开发,他们适配IE浏览器,我们要适配各种手机和系统版本,不过这就是安卓开发的乐趣吧。。。。。

 

 

2019年0218更新

 

   这是脉脉对蓝绿厂权限系统的吐槽,很多同行遇到了这个问题

 

  上述方法竟然在蓝绿厂手机VIVO,OPPO中不起作用, 注意,在OPPO/VIVO 8.0以下定制系统中,该方法将永远返回为true。

OPPO/VIVO手机在其本身系统8.0以下都使用自己的权限管理系统,即没有走安卓的原生系统的权限回调,导致程序无法获取到该权限的状态,8.0之后才使用了安卓的原生系统权限。

我在OPPO A57(系统版本6.0.1)手机上装了安卓版的钉钉,发现钉钉在oppo手机系统版本8.0以下也是无法获取到该权限的判断,证明我上述的逻辑验证总结是正确的。

不得不说,蓝绿厂真坑啊,小米华为都用安卓原生的系统权限,我也是醉了,这个可没法解决了. 

针对以上情况,不太友好的解决方法是:OPPO,VIVO 系统版本在8.0之下的可以进入界面每次都弹框提醒用户去获取位置权限,8.0之后可以用上述的方法来判断.

哎,太坑了,蓝绿厂,不想适配他们的权限了!!!

 

 

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值