2 wodetiande wodetiande 于 2016.02.16 11:39 提问

Android 定位权限被用户拒绝了,如何监听到权限被用户拒绝

Android 定位权限被用户拒绝了,如何监听到权限被用户拒绝?

需求是如果定位权限被用户拒绝了,在用到定位的地方提示用户去开启权限,请问我该如何监听这个权限是否被拒绝?

PackageManager pm = getPackageManager();

boolean flag = (PackageManager.PERMISSION_GRANTED ==
pm.checkPermission("android.permission.ACCESS_COARSE_LOCATION", "packageName"));

if (flag) {

//有这个权限,做相应处理

}else { //没有权限

}

上面这个方法试过了,不好使,只要在manifest.xml中声明了权限就会判定为true。

网友还有说通过在定位的地方进行try{}catch(Exception e){}方法来监听是否有异常抛出,我也试了,不会有异常抛出的!

我用的是 百度地图定位,在 mLocationClient.start()进行抓取异常,可是没有任何异常抛出,而且没有走BDLocationListener中的onReceiveLocation方法。

求各路大神指教如何监听定位权限被拒绝!

4个回答

zhouxiongfei
zhouxiongfei   2016.02.16 16:19
已采纳

如果权限被拒绝而没有走BDLocationListener中的onReceiveLocation方法,那就定义一个全局的BDLocation,如果定位失败,则全局的BDLocation为null,当需要用到定位信息时,直接判断是否为空就知道是不是定位失败了!不知道能不能帮到你...

qq_34198206
qq_34198206 回复敌羞偷他衣: 有没有误判呀?? 怎么做的可以准确判断??
接近 2 年之前 回复
wodetiande
wodetiande 我的方法是:定义一个全局BDLocation,在BDLocationListener中的onReceiveLocation方法中给BDLocation赋值,当需要用到定位信息时,直接判断是否为空就知道是不是定位失败了! 注:有可能会误判,不过目前还没有发现!
2 年多之前 回复
wodetiande
wodetiande 这个方法一定程度上可以满足需求,现在就是担心在客户没有禁止权限时,百度定位失败会不会误判!
2 年多之前 回复
wodetiande
wodetiande 是个方法,我去试一下,感谢
2 年多之前 回复
Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.16 22:31

没有权限,使用的时候除非主动发起会提示吧

wodetiande
wodetiande   2016.02.16 14:29

http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=107365&extra=page%3D1

这个帖子里面说了在Android系统6.0以上的解决方法,在api23里,又新提供了checkSelfPermission()方法,可是在23之前的怎么办?

wodetiande
wodetiande 回复晓lee: 我就是用的上面我采纳的那个方法
大约 2 年之前 回复
u013045543
u013045543 请问你解决了23之前的这个问题了吗
2 年多之前 回复
n10403
n10403   2016.06.12 16:09

请问楼主解决了吗 望告之 谢谢

wodetiande
wodetiande 回复晓lee: 我就是用的上面我采纳的那我个方法
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android用户拒绝权限
------------------------------------------------HNQ------------------------------------------------------------------- 第一次写博客 录音时如何判断android用户是否拒绝了权限,网上找了很多资料没找到,通过研究QQ等应用的处理方式,有了一个不太成熟的方案。 checkpe
Android 6.0 权限介绍 完善权限解决用户拒绝权限后再次进入继续申请权限
Android 6.0把权限分为两种:Normal Permissions(正常权限)和Dangerous Permissions(危险权限)。正常权限不会给用户的隐私带来不安全,不需要动态申请,在应用安装的时候就已经被授予了。危险权限需要动态处理,只有用户批准了这些权限,应用才能被授予这些权限。部分android手机系统已经在6.0以上了 但是android开发targetSdkVersion
android 权限拒绝时的问题解决(详解)
本篇博客主要针对于相机权限的解决,因为公司项目中二维码遇到这个问题,在网上找了两天的方案,几乎都是同一的解决办法,try catch; 特此我自己写一篇关于二维码权限的拒绝问题解决办法,还添加了6.0权限等问题,希望对你们有所帮助,我的问题只针对于二维码调用相机权限, 对于其他权限,我没有深入的了解,不知能否对于其他权限问题有所帮助,谅解。 问题的解决办法: 1.向项目中部
android 6.0动态权限申请以及拒绝后的控制
Android 6.0后官方对权限做了更改,一些涉及到用户隐私的权限必须要用户手动允许;而对于某些app来说,某个权限一旦被用户拒绝,则面临的是整个app的瘫痪,所以,我们要在合适的位置对出现的异常情况进行特殊操作: 首先调用权限的方法:ActivityCompat.requestPermissions(final @NonNull Activity activity,final @Non
android6.0用户拒绝权限后下次在申请
android 6.0权限配置 用户拒绝权限后再次申请 封装权限配置,方便开发。
在Android M中权限被拒绝时该如何处理
Android M Preview 2 的SDK中引入了一个方法来处理运行时权限:Activity.shouldShowRequestPermissionRationale()。 这个函数的作用是告知App在调用需要权限的功能前是否要显示相应理由。 当App刚安装的时候,这个方法会返回false,这时候它可以直接调用任何需要权限的功能而不需要解释,此时会正常弹出权限对话框。如果用户之前
android 请求权限被拒处理方法(使用于6.0以下系统)
**android 请求权限被拒处理方法(使用于6.0以下系统)** 最近处理BUG,发现部分手机拒绝我拍照的请求权限之后,程序会崩溃。由于Android系统在6.0以下是没有动态权限管理的,只有在M系统里面有,所以的话也不好解决这个问题。下面介绍我用**try catch**捕获异常的方法去实现。1.在我们需要用到权限的地方用 try catch 包裹起来@Override protect
Android6.0以上权限管理问题(权限被拒绝后)
Android6.0添加了运行时权限,用户可以在已安装的app上立刻同意或者拒绝权限,那么就意味着我们在使用APP的时候,当一个app会使用一些危险权限的时候就会提示用户是否授权.新的权限机制更好的保护了用户的隐私,Google将权限分为两类,一类是Normal Permissions,这类权限一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动、访问网络等;另一类是Dangerous Permission,一般是涉及到用户隐私的,需要用户进行授权,比如读取sdcard、访问通讯录等。
请求权限被拒绝的检测及处理
背景 正确的检查权限 请求权限的回调背景最近项目中请求打电话权限,然后正好手机中安装了360,拒绝了权限申请之后发现再次点击就没有反应了,因此需要先检查一下权限,网上有些说PackageManager pm = getPackageManager(); int permission = pm.checkPermission("android.permission.CALL_PHONE
Android6.0之前访问权限被拒绝如何处理
6.0之前权限是直接在安装apk的时候就已经全部添加; 但是如果用户在设置中没有开启此权限,可能会导致app直接崩溃;最简单的一种方式莫过于是使用try-catch一下代码;这样首先保证了在没有权限的情况下,程序也不会崩溃; 另外可以catch里弹出对话框,提示用户检查是否开启了相应的权限; 或者是弹出对话框让用户点击确定直接跳转到设置界面让用户添加权限; 目前这就是我能想到的,有好的方法