首页 > 解决方案 > 如何请求许可:READ_PRIVILEGED_PHONE_STATE?

问题描述

如何请求“android.permission.READ_PRIVILEGED_PHONE_STATE”权限?我知道从 Android 10 开始,从 Google Play 商店安装的第三方应用程序无法声明特权权限。

https://developer.android.com/about/versions/10/privacy/changes#data-ids

但是,我的应用程序不会与 Google Play 商店一起分发。我将共享 apk 文件,用户将手动安装应用程序。

我已在清单中声明许可:

<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />

我也试图将它作为任何常规许可来请求:

if(ActivityCompat.checkSelfPermission(this.getApplicationContext(), "android.permission.READ_PRIVILEGED_PHONE_STATE") != PackageManager.PERMISSION_GRANTED)        {
            ActivityCompat.requestPermissions(this, new String[]{"android.permission.READ_PRIVILEGED_PHONE_STATE"},123);
        }

但什么都没有发生。系统不会提示我授予此权限。没有显示警报对话框。我如何申请此权限?

标签: androidpermissions

解决方案


您不能将此权限用于 android 10 版本。您可以将 targetSdkVersion 更改为低于 29

Android 10 更改了设备标识符的权限,现在所有设备标识符都受到 READ_PRIVILEGED_PHONE_STATE 权限的保护。READ_PRIVILEGED_PHONE_STATE 权限仅授予使用平台密钥和特权系统应用签名的应用。

参考:

https://source.android.com/devices/tech/config/device-identifiers


推荐阅读