如何解码android.os.Build.SERIAL?

时间:2012-08-03 11:22:55

标签: java android serial-number

我正在处理重复出现的序列号主题,以提供唯一的ID。

我试试这个:

       String serial = null; 

        try {
            Class<?> c = Class.forName("android.os.SystemProperties");
            Method get = c.getMethod("get", String.class);
            serial = (String) get.invoke(c, "ro.serialno");
        } catch (Exception ignored) {
        }

        StringBuilder sb = new StringBuilder();
        sb.append("SERIAL ").append(android.os.Build.SERIAL).append("\n");


        textReportAdmin.setText(
                sb.toString());

两者都给出相同的值:C4F12FDD949F22F

在标签栏上和标签上,序列号为:RF2C202WYME

我在标签上工作,无法使用

    TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    String imei = telephonyManager.getDeviceId();

在我的情况下,IMEI是空的。

SERIAL是我所需要的,但是我需要它以透明版本显示在标签后面的条形码贴纸上。

我想这是可能的,因为,当进入系统应用程序,并查看设备的状态时,它显示为清晰...

如何将android.os.Build.SERIAL返回的值转换为人类可见的值?

EDITION:我也查了一下:

        sb.append("PRODUCT ").append(android.os.Build.PRODUCT).append("\n");
        sb.append("BOARD ").append(android.os.Build.BOARD).append("\n");
        sb.append("BOOTLOADER ").append(android.os.Build.BOOTLOADER).append("\n");
        sb.append("BRAND ").append(android.os.Build.BRAND).append("\n");
        sb.append("CPU_ABI ").append(android.os.Build.CPU_ABI).append("\n");
        sb.append("CPU_ABI2 ").append(android.os.Build.CPU_ABI2).append("\n");
        sb.append("DEVICE ").append(android.os.Build.DEVICE).append("\n");
        sb.append("DISPLAY ").append(android.os.Build.DISPLAY).append("\n");
        sb.append("FINGERPRINT ").append(android.os.Build.FINGERPRINT).append("\n");
        sb.append("HARDWARE ").append(android.os.Build.HARDWARE).append("\n");
        sb.append("HOST ").append(android.os.Build.HOST).append("\n");
        sb.append("ID ").append(android.os.Build.ID).append("\n");
        sb.append("MANUFACTURER ").append(android.os.Build.MANUFACTURER).append("\n");
        sb.append("MODEL ").append(android.os.Build.MODEL).append("\n");
        sb.append("PRODUCT ").append(android.os.Build.PRODUCT).append("\n");
        sb.append("RADIO ").append(android.os.Build.RADIO).append("\n");
        sb.append("SERIAL ").append(android.os.Build.SERIAL).append("\n");
        sb.append("TAGS ").append(android.os.Build.TAGS).append("\n");
        sb.append("TIME ").append(android.os.Build.TIME).append("\n");
        sb.append("TYPE ").append(android.os.Build.TYPE).append("\n");
        sb.append("USER ").append(android.os.Build.USER).append("\n");

无处,我得到了贴纸上的序列号,虽然它可以被发现,但系统本身能够在“参数”,“关于”,“状态”中显示它(我不知道)在英文单词中,我有一个法文标签,它是“Paramètres”,“A propos de”,“Etat”,然后是“序列号”,清晰版本,如贴纸上所示。

4 个答案:

答案 0 :(得分:5)

你试过这个吗?

String serial = null; 

try {
     Class<?> c = Class.forName("android.os.SystemProperties");
     Method get = c.getMethod("get", String.class);
     serial = (String) get.invoke(c, "ril.serialnumber");
 } catch (Exception ignored) {
 }

答案 1 :(得分:4)

如果您想获得设备背面显示的序列号,如果您使用的是Samsung Galaxy Tab,那么为什么不使用'ril.serialnumber'属性

项目已更改为您的设备应显示的内容:

$ adb shell getprop | grep serial
[ril.serialnumber]: [RF2C202WYME]
[ro.boot.serialno]: [c4f12fdd949f22f]
[ro.serialno]: [c4f12fdd949f22f]

pre-jellybean'ro.boot.serialno'不存在

答案 2 :(得分:0)

在许多设备上,设置中显示的信息 - &gt;关于非标准的活动,不能从任何标准Android API获得。例如,有时会在那里显示FCC ID,但应用程序无法使用。

此外,并不要求通过API提供的序列号是产品的“真实”序列号(即包装上的序列号)。只是它是独特的。

所以,我认为没有办法做你想做的事情(阅读盒子和关于活动的序列号),然后查看该产品的源代码(如果有的话),看看是否有获取该特定产品或制造商的信息的方法。

答案 3 :(得分:0)

你应该使用 sys.serialnumber,有些设备有ril.serialnumber,有些设备有sys.serialnumber,所以你应该试试sys1