android - 如何请求许可: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);
}
但什么都没有发生。系统不会提示我授予此权限。没有显示警报对话框。我如何申请此权限?
解决方案
您不能将此权限用于 android 10 版本。您可以将 targetSdkVersion 更改为低于 29
Android 10 更改了设备标识符的权限,现在所有设备标识符都受到 READ_PRIVILEGED_PHONE_STATE 权限的保护。READ_PRIVILEGED_PHONE_STATE 权限仅授予使用平台密钥和特权系统应用签名的应用。
参考:
https://source.android.com/devices/tech/config/device-identifiers
推荐阅读
- google-bigquery - Bigquery 中的 SHA_256 哈希
- javascript - DataTables 对下拉列表中选定输入的自定义日期排序
- io - 当我们可以在 8086 处理器中使用就绪引脚时,为什么还需要一个保持引脚?
- google-cloud-platform - 将访问控制应用于 BigQuery 或 Bigtable 等 GCP 服务时,不同级别的访问控制如何相互冲突?
- angular - 更新指令中的属性值
- javascript - 在矩形内绘制对角线
- spring-boot - 在 Spring Boot 中发送带有多个附件的电子邮件
- c# - 在 Form.OnPaint 中设置“System.Drawing.Graphics.Transform”会产生 ArgumentException
- javascript - 在下拉列表中选择一个选项时,如何使用 onChange 更改状态但使用选项标签内的值以外的值
- python-3.x - 按日期分组扩展总和