我有三星Galaxy Tab 2.0(7“)
此设备背面是格式的序列号
RF3C6000MNA
当我在我的设备上进行设置,并选择关于设备 - >状态 - >序列号时,也会显示此编号。
但是,我不能找到一种以编程方式提取此数字的方法。我看过很多关于提取序列号的文章,但这会返回一个完全不同的数字。 (使用android.os.Build.SERIAL)
我已经提取了IMEI和MAC地址,因此我不需要代码。
答案 0 :(得分:30)
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模型 - 请参阅此gist)。根据Himanshu的回答 Galaxy Tab 3 使用sys.serialnumber
(也由this answer支持)。 sys.serialnumber
对于平板电脑更有意义,因为ril.*
代表无线接口层,大多数平板电脑都没有配备(ril.serialnumber
,这对手机来说更有意义)。Settings.Secure.ANDROID_ID
或分散在各处的各种其他“唯一”标识符API)。这意味着由制造商决定存储设备序列的位置(如果有的话)。在 S3 Mini 上ril.serialnumber
, NexusOne ,ro.serialno
(gist), Galaxy Tab 2 它是ril.serialnumber
, Galaxy Tab 3/4 它是sys.serialnumber
,联想选项卡它是none of the above。在查找设备序列时,这些设置似乎是常见的嫌疑,但不应该被视为理所当然,因此,不应依赖它来跟踪独特的应用程序安装。答案 1 :(得分:2)
您可以在adb shell上使用getprop
命令,并检查哪个文件包含正确的序列号。很多时候,序列号位于不同的文件中,代码必须是特定于设备的。
对于samung Tab 3,您可以使用以下代码:
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";
}
答案 2 :(得分:0)
我们为产品使用Build类。看看这是否匹配:http://developer.android.com/reference/android/os/Build.html#SERIAL