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之后可以用上述的方法来判断.

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

 

 

 

 

    原文作者:布丁西西
    原文地址: https://blog.csdn.net/shenshibaoma/article/details/85251393
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞