美文网首页AndroidAndroid Road安卓布局
在android 6.0动态权限问题无法获取READ_PHONE

在android 6.0动态权限问题无法获取READ_PHONE

作者: 小追兵 | 来源:发表于2016-01-25 11:32 被阅读37418次

    小追兵专栏

    Android 6.0

    我遇到的问题是,我在明明在AndroidManifest.xml中添加了READ_PHONE_STATE权限,可是在我的手机上一直报错,错误信息如下:

    getDeviceId: Neither user 10254 nor
    current process has android.permission.READ_PHONE_STATE.
    
    java.lang.SecurityException: getDeviceId: 
    has android.permission.READ_PHONE_STATE.
    

    后来发现,其他非android6.0的系统都是正常的,还有一个问题,是我为了兼容android的样式,吧targetSdkVersion 19改成了targetSdkVersion 23,所以android6.0在同事的targetSdkVersion 19上运行是没问题的。


    这个问题产生有几个条件:

    1. 你的测试机是android6.0以上版本;
    2. 你的编译环境的 targetSdkVersion 23;
    3. 你在代码中没有做权限的请求处理;

    产生问题的原因:

    android 6.0以上增加了动态获取权限api,想要动态获取手机的权限。类似iOS那样,在使用时,弹出对话框,提示用户,请求用户允许。如果你没做处理,就会报错。
    现在给你两个链接,应该可以帮助我们解决这个问题:

    解决办法:

    解决办法有两个,任选一个即可。
    方法一: targetSdkVersion 设置小于23;
    方法二:如下,代码中增加动态权限适配;

    问题的描述:

    https://stackoverflow.com/questions/32635704/cant-get-the-permission

    解决的方法:
    https://developer.android.com/intl/zh-cn/training/permissions/requesting.html

    比较好用的github库
    https://github.com/hotchemi/PermissionsDispatcher

    Demo详解地址:
    http://www.jianshu.com/p/dbe4d37731e6
    Demo下载地址:
    https://github.com/SpikeKing/wcl-permission-demo

    最后:有需要Shadowsock翻墙账号可以私聊。

    相关文章

      网友评论

        本文标题:在android 6.0动态权限问题无法获取READ_PHONE

        本文链接:https://www.haomeiwen.com/subject/kbzrkttx.html