首页 > 解决方案 > Build.GetSerial() 在 API 29 上返回未知数

问题描述

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

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

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

你有什么想法?

标签: androidxamarinandroid-10.0

解决方案


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

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

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

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

  1. 创建一个系统应用程序,以便能够获得READ_PRIVILEGED_PHONE_STATE系统权限(普通应用程序无法获得此权限)。
  2. 注册为运营商(这需要您已经构建了 Android ROM)
  3. 拥有自定义“工作配置文件”以在设备中设置您自己的策略。

可以想象,所有这些选项都不适合标准的 android 应用程序开发人员使用


推荐阅读