【Android】java.lang.SecurityException: getDeviceId: Neither user xxxxx nor current process has andro

来源:互联网 发布:中国汽车材料数据批准 编辑:程序博客网 时间:2024/04/29 03:24
  • 错误异常
  • 产生原因
  • 解决办法
  • 参考链接

错误异常

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

这里的getDeviceId可能是获取系统状态或内容的操作,最后的android.permission.READ_PHONE_STATE 也可能是其它权限,具体可以查看 Android文档中的权限分组 。

产生原因

使用Android Studio编译项目的时候将 app/build.gradle 中的 defaultConfig 设置中的 targetSdkVersion 设置为了23, 这样 Android Studio在编译的时候会使用 Android 23 API即Android 6.0来编译项目,但是,如果你没有给项目加上动态权限请求的话,你的应用在安装到手机的时候将不会获取任何权限!!!可以去查看应用的应用信息,其中的 Permissions 权限列表中所有的权限组都是关闭状态。

解决办法

如果你需要紧急避免自己的应用继续在Android 6.0的系统上崩溃,可以将app/build.gradle中的 targetSdkVersion和compileSdkVersion设置为22或以下版本,这样的话,编译出来的app会在Android 6.0上以兼容模式运行,可以获取需要的权限,但随着Android 6.0的普及,我还是推荐大家尽量给项目加上动态权限时的判断以及逻辑处理。

参考链接

http://stackoverflow.com/questions/33078003/android-6-0-permission-error 

http://stackoverflow.com/questions/32742327/neither-user-10102-nor-current-process-has-android-permission-read-phone-state

转载自:http://www.th7.cn/Program/Android/201604/841700.shtml

0 1
原创粉丝点击