【问题标题】:Build.GetSerial() returns unknown on API 29Build.GetSerial() 在 API 29 上返回未知数
【发布时间】:2020-04-07 02:52:57
【问题描述】:

我无法在 android 10 设备上获取序列号。

我知道一切(权限,运行时权限,我只有在获得权限后才能获得串行)从这里 android Build.GetSerial() throwing exception

我的代码适用于所有 android 版本,除了 10

你有什么想法吗?

【问题讨论】:

    标签: android xamarin android-10.0


    【解决方案1】:

    如果您在此处关注官方文档:https://developer.android.com/reference/android/os/Build.html#getSerial(),有关 Android 10 更改的更多信息here

    您会注意到,从 Android 10 开始,此方法返回 Build.UNKNOWN。您不能再使用它来唯一标识单个设备了

    您需要切换到名为Settings.Secure.ANDROID_ID 的“更少”持久版本

    绕过此限制的唯一方法是:

    1. 创建一个系统应用可以获取READ_PRIVILEGED_PHONE_STATE系统权限(普通应用无法获取)。
    2. 注册为运营商(要求您已构建 Android ROM)
    3. 拥有自定义“工作配置文件”以在设备中设置您自己的政策。

    您可以想象,所有这些选项都不是标准的 Android 应用开发者可以使用的

    【讨论】:

    • Tnx 向ANDROID_ID 寻求建议。我阅读了更改说明,但我仍然不明白有信息表明它总是会为 Android 10 返回UNKNOWN。如果你有READ_PHONE_STATE 而你没有READ_PRIVILEGED_PHONE_STATE,它应该这样做。跨度>
    • 问题是READ_PRIVILEGED_PHONE_STATE是系统权限。只有系统中预装的应用才能获得权限,因此如果您使用的是非 root 设备,则无法获得第三方应用的权限。
    • 哦。我知道了。我在什么文档中阅读了有关第三方应用程序的信息,但我不明白。 Tnx 为您提供帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    相关资源
    最近更新 更多