获取Android设备的硬件序列号

Posted

技术标签:

【中文标题】获取Android设备的硬件序列号【英文标题】:Get hardware serial number of Android device 【发布时间】:2015-01-02 01:22:01 【问题描述】:

我需要获取安装了我的应用的 android 设备的硬件序列号。这个硬件序列号就是你可以在Settings > About Device > Status > Serial number看到的那个。

虽然我会使用 Settings.Secure.ANDROID_ID or android.os.Build.SERIAL 来获取它,但它们都不起作用,这意味着它们没有给我我正在寻找的唯一标识符。例如,android.os.Build.SERIAL 在您运行命令 adb devices 时为我提供了 ADB 上显示的唯一 ID。

请注意,这个问题的目标不是找到另一个可以帮助我的唯一标识符,它只是关于获取设备硬件序列号。

感谢您的帮助。

编辑:

请清楚,我不是在寻找字符串 android.os.BUILD.SERIAL 提供的值。我知道如何获得该值,但我对此不感兴趣。

我有一台三星设备,因此他们使用的序列号与 android.os.BUILD.SERIAL 提供的序列号不同。

【问题讨论】:

发布您的代码,并解释为什么您认为它不起作用 @FedeBucich 是它不起作用,是因为我得到了其他唯一标识符,这些标识符不是我想要的。我需要的是我可以检查设置的那个,而不是我使用 ADB 或其他唯一 ID 将设备连接到 PC 时得到的那个。 @Funkystein 很抱歉,但这与它无关,因为在那篇文章中他们有兴趣使用 android.os.Build.Serial,这不是我需要的唯一 ID。 ***.com/questions/2322234/… 设置应用程序是开源的,您可能可以进入该代码以确定使用了什么。 【参考方案1】:

解决方法很简单:

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) 平板电脑的序列号,但可能适用于更多的三星平板电脑。 “ril.serialnumber”用于获取我的三星 GT-I8550L (Galaxy Win) 上的值。

我希望这会有所帮助。

【讨论】:

Galaxy Tab 2 (GT-P3113) 奇怪地使用了ril.serialnumber(so question 和gist)。 它对我不起作用。但是这样做了:***.com/questions/11029294/…

以上是关于获取Android设备的硬件序列号的主要内容,如果未能解决你的问题,请参考以下文章

[方法提炼] 获取Android设备序列号方法

Android 获取设备序列号(SN号)含源码Demo

如何获取Android唯一标识(唯一序列号)

如何从 Android 设备获取 apk 文件?

APIWindows 硬件设备GUID序列号

android 设备如何获取mac地址吗