Android get Serial Number

android, java

Solution

There are several ways to get that number depending on the device's manufacturer and Android version :

public static String getSerialNumber() {
    String serialNumber;

    try {
        Class<?> c = Class.forName("android.os.SystemProperties");
        Method get = c.getMethod("get", String.class);

        serialNumber = (String) get.invoke(c, "gsm.sn1");
        if (serialNumber.equals(""))
            serialNumber = (String) get.invoke(c, "ril.serialnumber");
        if (serialNumber.equals(""))
            serialNumber = (String) get.invoke(c, "ro.serialno");
        if (serialNumber.equals(""))
            serialNumber = (String) get.invoke(c, "sys.serialnumber");
        if (serialNumber.equals(""))
            serialNumber = Build.SERIAL;

        // If none of the methods above worked
        if (serialNumber.equals(""))
            serialNumber = null;
    } catch (Exception e) {
        e.printStackTrace();
        serialNumber = null;
    }

    return serialNumber;
}

Taken from this gist.

Problem

I am trying to get the device serial number programmatically. I have used the following line: ``` Build.SERIAL ``` Which returns something like : 95b9efad04ad28 However which I go to the settings on the device, I can see that it displays a different string: Could anyone point me in the correct direction?

Original source

Related problems