我正在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文件,我想在安装时会授予所有应用程序所需的权限。
答案 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);