android 如何判断权限是否被拒绝了

泡在网上的蜘蛛 2016-01-20 10:35:54
今天我做到一个功能就是获取联系人,现在由于手机里自带的系统管理能提供用户是否授权阻止该权限,当如果用户拒绝了,我获取的联系人就为空了,有什么方式可以判断用户拒绝了授权?


我的需求就是:
1、授权被拒绝的时候如何再次调用对话框让用户选择授权。
2、我要知道他是否拒绝授权,然后提示用户去开启获取联系人的权限。

我使用PackageManager的checkPermission方法是不行的,因为这个方法是判断是否在AndroidManifest.xml注册过该权限。

求大神指导一下,如何获取权限的状态

...全文
10575 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
z白依 2017-09-24
  • 打赏
  • 举报
回复
PackageManager pm = getPackageManager(); boolean permission = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.RECORD_AUDIO", "packageName")); if (permission) { showToast("有这个权限"); }else { showToast("木有这个权限"); } packageName:应用包名
m0_37565878 2017-02-18
  • 打赏
  • 举报
回复
try catch是怎么实现的呀,不会弄,能贴一下代码吗?我也遇到这个问题了~求各位大神赐教
m0_37565878 2017-02-18
  • 打赏
  • 举报
回复
太容易try catch是怎么实现的呀,能贴一下代码吗?我也遇到这个问题了~求各位大神赐教
行云1992 2016-08-01
  • 打赏
  • 举报
回复
有木有好办法啊
dskj654566 2016-06-27
  • 打赏
  • 举报
回复
看看这个吧 http://jijiaxin89.com/2015/08/30/Android-s-Runtime-Permission/
  • 打赏
  • 举报
回复
没有好的解决方案。
睡精灵 2016-06-12
  • 打赏
  • 举报
回复


ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.READ_CONTACTS},
                        10000);

@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        switch (requestCode){
            case 10000:

                if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){
                   //已获取权限
                }else{
                    //权限被拒绝
                }

                break;
        }
    }

dontlo 2016-06-12
  • 打赏
  • 举报
回复
楼主有找到6.0之前的解决方案吗.. 感觉掉坑里去了
「已注销」 2016-06-06
  • 打赏
  • 举报
回复
那啥,我这也卡了,我也是在try catch 中判断的,没招啊!
  • 打赏
  • 举报
回复
暂时我的解决方案通过try catch 加 是否能获取到数据来做的,6.0以后就可以做到监听了,之前我还没找到方案,如有人有更好的方案,欢迎回复分享。
果然是酱 2016-05-10
  • 打赏
  • 举报
回复
淘二二 2016-05-09
  • 打赏
  • 举报
回复
楼主解决了吗??
qq_32659073 2016-04-21
  • 打赏
  • 举报
回复
我现在也做这个了,悲催了
iphone137 2016-03-29
  • 打赏
  • 举报
回复
这个问题没法解决吗?我也遇到了,目前找不到合适的办法
  • 打赏
  • 举报
回复
引用 6 楼 w910920 的回复:
楼主解决了么,我也碰到这茬了,无法判断权限是否被拒绝,悲。。。。
没有解决。。。。 我直接获取通讯录为空就认为是失败的。
w910920 2016-01-27
  • 打赏
  • 举报
回复
楼主解决了么,我也碰到这茬了,无法判断权限是否被拒绝,悲。。。。
UESTC少尉 2016-01-21
  • 打赏
  • 举报
回复
引用 4 楼 bobxie520 的回复:
[quote=引用 1 楼 jueshiqicai11 的回复:] 我以前类似的判断语音权限的时候,是在上一层(或尝试根据结果判定)判断的,确实无法(我也尚未找到)用是否在AndroidManifest.xml注册过该权限来判断,顶一下吧
我现在也找不到方法了 , 我只要获取联系人为空就认为获取权限失败,但是如果新手机用那就误判的了,我还没找到好方法,求大神来解决一下,如何更完美的做这个判断。[/quote]我觉得可以看看6.0的权限模块怎么改的,因为6.0的权限不是在manifest里面设置了,而是像ios一样,用到的时候提醒用户,看看怎么兼容下面的版本的。可能会对你说的这个问题有帮助
  • 打赏
  • 举报
回复
引用 1 楼 jueshiqicai11 的回复:
我以前类似的判断语音权限的时候,是在上一层(或尝试根据结果判定)判断的,确实无法(我也尚未找到)用是否在AndroidManifest.xml注册过该权限来判断,顶一下吧
我现在也找不到方法了 , 我只要获取联系人为空就认为获取权限失败,但是如果新手机用那就误判的了,我还没找到好方法,求大神来解决一下,如何更完美的做这个判断。
  • 打赏
  • 举报
回复
引用 2 楼 hjywyj 的回复:
我一般都是try catch里去捕获错误信息的
try catch捕获不到,获取的Cursor都还是有值的,而且我看过这种方法还是有兼容问题的。
  • 打赏
  • 举报
回复
我一般都是try catch里去捕获错误信息的
加载更多回复(1)

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧