如何在android中获取lenovo选项卡的真实序列号

时间:2014-05-21 04:28:58

标签: android

我正在尝试获取运行Android的Lenovo Idea标签的序列号。我尝试了Google搜索中提供的所有选项,其中包括:

Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class);  
String serial = (String) get.invoke(c, "ril.serialnumber" );
String serial_no = (String) get.invoke(c, "ro.serialno");
String serial_no1 = (String) get.invoke(c, "sys.serialnumber");

ro.serialno的值为8TYDE67HYLUOZPOZ,但“状态 - &gt;关于平板电脑”中显示的序列号为HGC2TKH4,背面的打印序列号为标签也是HGC2TKH4

ril.serialnumbersys.serialnumber为空。

在其他一些标签中,ril.serialnumber也是空的,但我希望它有序列号。

请问,如何在Android上找到我的设备的真实序列号?

3 个答案:

答案 0 :(得分:6)

我最近不得不为联想平板电脑获得SN。 您可以使用以下方法

public static String getIMEI(Context context) {
    TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    return telephonyManager != null ? (telephonyManager.getDeviceId() != null ? telephonyManager.getDeviceId() : "N/A") : "N/A";
}

public static String getSN() {
    String deviceSN = "N/A";
    try {
        Class<?> propClass = Class.forName("android.os.SystemProperties");
        Method getProp = propClass.getMethod("get", String.class, String.class);
        deviceSN = (String) getProp.invoke(propClass, "gsm.sn1", "N/A");
    } catch (Exception ignored) {
    }
    return deviceSN;
}

public static String getPN() {
    String devicePN = "N/A";
    try {
        Class<?> propClass = Class.forName("android.os.SystemProperties");
        Method getProp = propClass.getMethod("get", String.class, String.class);
        devicePN = (String) getProp.invoke(propClass, "ro.lenovosn2", "N/A");
    } catch (Exception ignored) {
    }
    return devicePN;
}

Lenovo有自定义属性名称,您可以使用以下adb命令查看所有可用的道具:

adb shell getprop

答案 1 :(得分:1)

我使用此代码从Lenovo标签7 Essential(运行Android 7.0的2017型号)获取序列号。我也用它来获取三星序列号(Galaxy Camera 1/2运行Android 4和标签A运行6,然后更新到7.1.1)。

private static String UNKNOWN = "unknown";
static String GetDeviceSerialNumber() {
    String serial;
    if (Build.MANUFACTURER.toLowerCase().contains("lenovo")) {
        serial = GetLenovoManufacturerSerialNumber();
    } else {
        serial = GetSamsungManufacturerSerialNumber();
    }
    if (serial == null || serial.equals(UNKNOWN)) {
        serial = Build.SERIAL; // this is NOT usually the serial displayed on the device, but it returns something
    }
    return serial;
}
// http://stackoverflow.com/questions/14161282/serial-number-from-samsung-device-running-android
private static String GetSamsungManufacturerSerialNumber() {
    String serial = GetSystemPropertyString("ril.serialnumber"); // older Samsung devices - works on Galaxy Camera 1
    if (serial == null || serial.equals(UNKNOWN)) {
        serial = GetSystemPropertyString("sys.serialnumber"); // newer Samsung devices
    }
    return serial;
}
// https://stackoverflow.com/questions/23773975/how-to-get-real-serial-number-of-lenovo-tab-in-android
private static String GetLenovoManufacturerSerialNumber() {
    return GetSystemPropertyString("ro.lenovosn2");
}
private static String GetSystemPropertyString(String prop) {
    try {
        Class<?> c = Class.forName("android.os.SystemProperties");
        Method get = c.getMethod("get", String.class, String.class);
        return (String)get.invoke(c, prop, UNKNOWN);
    } catch (Exception ignored) {
        ignored.printStackTrace();
        return null;
    }
}

希望这对某人有帮助。

答案 2 :(得分:0)

您可以使用以下代码获取有关设备硬件的所有信息。

Build.BRAND  //Brand Name

Build.DEVICE   //Device Name

Build.MODEL   //Model No

Build.SERIAL  //Serial No

导入此命名空间:: import android.os.Build;

如果我的答案是对的,请告诉我。