获取Android设备的硬件序列号

18
我需要获取安装我的应用程序的Android设备的硬件序列代码。这个硬件序列号是你可以在“设置>关于设备>状态>序列号”中看到的那个。
我原以为可以使用 "Settings.Secure.ANDROID_ID 或 android.os.Build.SERIAL"来获得它,但两者都没有起作用,这意味着它们没有给我独特的标识符。例如,android.os.Build.SERIAL 会让我得到通过ADB运行命令 "adb devices" 显示的唯一ID。
请注意,这个问题的目标不是找到另一个可以帮助我的唯一标识符,而只是获取设备的硬件序列号。
感谢您的帮助。
编辑:
请明确我不是在寻找String android.os.BUILD.SERIAL提供的值。我知道如何获取该值,但我对此不感兴趣。
我有一个三星设备,因此他们使用的序列号与android.os.Build.SERIAL提供的序列号不同。

1
https://dev59.com/CnE95IYBdhLWcg3wadOq - joao2fast4u
(这明显使用了 Build.SERIAL - njzk2
@njzk2 你说得对,确实是这样,但我有一台三星设备,提供的值不同。 - Storo
这是一个有趣的信息。 - njzk2
处理这种情况的正确方式是将问题标记为重复。然而,我目前还没有独立关闭问题的权限,因此需要另外三个人投票关闭。 - njzk2
显示剩余11条评论
1个回答

17

解决方案非常简单:

Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class, String.class);
serialNumber = (String) get.invoke(c, "sys.serialnumber", "Error");
if(serialNumber.equals("Error")) {
    serialNumber = (String) get.invoke(c, "ril.serialnumber", "Error");
}

这将为您获取大多数三星设备的序列号。我使用“sys.serialnumber”值来获取我的SM-T210(Galaxy Tab 3)和SM-T230(Galaxy Tab 4)平板电脑的序列号,但可能适用于更多三星平板电脑。在我的三星GT-I8550L(Galaxy Win)上获取值的方法是使用“ril.serialnumber”。

希望这可以帮助您。


2
Galaxy Tab 2 (GT-P3113) 奇怪地使用 ril.serialnumber参见问题代码片段)。 - dev
1
它对我没用。但这个可以:https://dev59.com/72gu5IYBdhLWcg3w2ahm - unludo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接