android - Build.GetSerial() 在 API 29 上返回未知数
问题描述
我无法在 android 10 设备上获取序列号。
我知道一切(权限,运行时权限,我只有在获得权限后才能获得串行)从这里 android Build.GetSerial() 抛出异常
我的代码适用于所有 android 版本,除了 10
你有什么想法?
解决方案
如果您在此处遵循官方文档:https://developer.android.com/reference/android/os/Build.html#getSerial(),有关 Android 10 的更多信息将在此处更改
您会注意到,从 Android 10 开始,此方法将返回Build.UNKNOWN。您不能再使用它来唯一标识单个设备
您需要切换到名为Settings.Secure.ANDROID_ID的“较少”持久版本
绕过此限制的唯一方法是:
- 创建一个系统应用程序,以便能够获得
READ_PRIVILEGED_PHONE_STATE
系统权限(普通应用程序无法获得此权限)。- 注册为运营商(这需要您已经构建了 Android ROM)
- 拥有自定义“工作配置文件”以在设备中设置您自己的策略。
可以想象,所有这些选项都不适合标准的 android 应用程序开发人员使用