用户10632和当前进程在Android 6中都没有android.permission.READ_PHONE_STATE错误

时间:2017-05-16 12:24:29

标签: android permissions runtime-error android-6.0-marshmallow

我正在Android 6中开发Android应用程序,而我在服务中的应用程序需要获取设备ID(getDeviceId)。我在清单文件中设置了android.permission.READ_PHONE_STATE,但在运行时我遇到了这个错误:

neither user 10632 nor current process has android.permission.READ_PHONE_STATE. java.lang.SecurityException:getDeviceId need android.permission.Read_Phone_state

我使用adb install myapk.apk安装我的apk文件,我想在安装时会授予所有应用程序所需的权限。

2 个答案:

答案 0 :(得分:2)

你需要在android 6+中的运行时请求权限。访问android开发者页面,了解如何申请Android M及以上访问权限:https://developer.android.com/training/permissions/requesting.html

答案 1 :(得分:2)

您还需要在运行时请求权限。

int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
    Manifest.permission.READ_PHONE_STATE);
  

如果应用具有权限,则该方法返回PackageManager.PERMISSION_GRANTED,应用可以继续操作。如果应用程序没有权限,则该方法返回PERMISSION_DENIED,并且应用程序必须明确要求用户许可。

如果你没有得到它,你应该要求它

ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_PHONE_STATE},
                MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);