4

我正在研究循环序列号主题以提供唯一 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 返回的值转换为人类可见的值?

版本:我还查看了:

        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”,然后是“Serial Number”,清晰版本,如贴纸上所示。

4

4 回答 4

7

你试过这个吗?

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) {
 }
于 2013-03-05T23:07:23.090 回答
6

如果您想获取设备背面显示的序列号,并且如果您使用的是三星 Galaxy Tab,那么为什么不使用“ril.serialnumber”属性

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

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

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

于 2013-01-08T08:59:08.977 回答
1

在许多设备上,“设置”->“关于活动”中显示的信息是非标准的,并且无法从任何标准 Android API 获得。例如,FCC ID 有时会显示在那里,但对应用程序不可用。

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

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

于 2012-12-15T22:15:08.920 回答
1

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

于 2017-01-02T18:45:16.013 回答