在android 6中,用户10632和当前进程都没有android.permission.READ\u PHONE\u状态错误

在android 6中,用户10632和当前进程都没有android.permission.READ\u PHONE\u状态错误,android,permissions,runtime-error,android-6.0-marshmallow,Android,Permissions,Runtime Error,Android 6.0 Marshmallow,我正在Android 6中开发一个Android应用程序,我在服务中的应用程序需要获取设备ID(getDeviceId)。我已在清单文件中设置了android.permission.READ\u PHONE\u STATE,但在运行时出现以下错误: neither user 10632 nor current process has android.permission.READ_PHONE_STATE. java.lang.SecurityException:getDeviceId need

我正在Android 6中开发一个Android应用程序,我在服务中的应用程序需要获取设备ID(
getDeviceId
)。我已在清单文件中设置了android.permission.READ\u PHONE\u 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文件,我假设所有应用程序所需的权限都是在安装时授予的。

您需要在android 6+运行时请求权限。访问android开发者页面了解如何申请android M及以上版本的权限访问:

您需要在android 6+运行时申请权限。访问android开发者页面了解如何申请android M及以上版本的权限访问:

您还需要在运行时申请权限

int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
    Manifest.permission.READ_PHONE_STATE);
如果应用程序具有该权限,该方法将返回PackageManager.permission_,并且应用程序可以继续该操作。如果应用程序没有权限,则该方法返回permission_DENIED,并且应用程序必须显式请求用户权限

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

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

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

int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
    Manifest.permission.READ_PHONE_STATE);
如果应用程序具有该权限,该方法将返回PackageManager.permission_,并且应用程序可以继续该操作。如果应用程序没有权限,则该方法返回permission_DENIED,并且应用程序必须显式请求用户权限

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

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

可能重复的可能重复的可能重复的可能重复的有没有任何方式我在运行时不向用户询问权限?有没有任何方式我在运行时不向用户询问权限?