我有一台三星Galaxy Tab 2.0(7英寸)的设备。
在这个设备的背面上,有一个格式为RF3C6000MNA的序列号。
当我进入设备的设置页面时,选择"关于设备"->"状态"->"序列号",也会显示这个数字。
然而,我无法以编程方式提取此数字。
我已经看到很多关于提取序列号的文章,但是它返回了完全不同的数字。(使用android.os.Build.SERIAL)
我已经提取了IMEI和MAC地址,因此不需要相关代码。
我有一台三星Galaxy Tab 2.0(7英寸)的设备。
在这个设备的背面上,有一个格式为RF3C6000MNA的序列号。
当我进入设备的设置页面时,选择"关于设备"->"状态"->"序列号",也会显示这个数字。
然而,我无法以编程方式提取此数字。
我已经看到很多关于提取序列号的文章,但是它返回了完全不同的数字。(使用android.os.Build.SERIAL)
我已经提取了IMEI和MAC地址,因此不需要相关代码。
public static String getManufacturerSerialNumber() {
String serial = null;
try {
Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class, String.class);
serial = (String) get.invoke(c, "ril.serialnumber", "unknown");
} catch (Exception ignored) {}
return serial;
}
编辑: 距离此回答已经有一段时间了,这里有几个更新点:
ril.serialnumber
(即使对于非3G模型也是如此-请参见此处)。根据Himanshu的回答,Galaxy Tab 3使用sys.serialnumber
(另支持此答案)。对于平板电脑来说,sys.serialnumber
更加合理,因为ril.*
代表无线电接口层,而大多数平板电脑都没有配备 (ril.serialnumber
则更适用于手机)。Settings.Secure.ANDROID_ID
或API中分散的其他“唯一”标识符混淆)没有标准API。这意味着由制造商决定在哪里存储设备序列号(如果有的话)。在S3 Mini上,它是ril.serialnumber
,在NexusOne上,它是ro.serialno
(此处),在Galaxy Tab 2上,它是ril.serialnumber
,在Galaxy Tab 3/4上,它是sys.serialnumber
,在Lenovo Tab上,它既不是以上任何一种(请参见此处)。这些设置似乎是寻找设备序列号的常规嫌疑人,但不应视为理所当然,因此不应依赖于其跟踪唯一应用程序安装。try {
Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class, String.class);
serialnum = (String) (get.invoke(c, "sys.serialnumber", "unknown"));
} catch (Exception ignored) {
serialnum = "unknown";
}