在android 6.0以上无法获取READ_PHONE_STATE权限的SecurityException的问题

我遇到的问题是,我在明明在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那样,在使用时,弹出对话框,提示用户,请求用户允许。如果你没做处理,就会报错。

现在给你两个链接,应该可以帮助我们解决这个问题:

问题的描述:

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

解决的方法:

https://developer.android.com/intl/zh-cn/training/permissions/requesting.html

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值