【问题标题】:neither user 10632 nor current process has android.permission.READ_PHONE_STATE error in Android 6用户 10632 和当前进程在 Android 6 中都没有 android.permission.READ_PHONE_STATE 错误
【发布时间】:2017-05-16 12:24:29
【问题描述】:

我正在 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 文件,并且我认为所有应用程序所需的权限都是在安装时授予的。

【问题讨论】:

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


【解决方案1】:

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

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

如果app有权限,该方法返回PackageManager.PERMISSION_GRANTED,app可以继续操作。如果应用没有权限,该方法返回PERMISSION_DENIED,应用必须显式向用户请求权限。

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

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

【讨论】:

  • 有什么方法可以在运行时不向用户询问权限?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 2018-03-21
    • 1970-01-01
    相关资源
    最近更新 更多