java.lang.SecurityException: getDeviceId: Neither user 10705 nor current process has android.permiss

错误异常

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

这里的getDeviceId可能是获取系统状态或内容的操作,最后的android.permission.READ_PHONE_STATE 也可能是其它权限


产生原因

使用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的普及,我还是推荐大家尽量给项目加上动态权限时的判断以及逻辑处理。

原文地址:https://blog.csdn.net/zhufuing/article/details/51217969

猜你喜欢

转载自blog.csdn.net/a262624/article/details/79859182