如何通过android代码获得adb devices获得的serial number

在网上看到有人给出代码是这样的:
public static String getSerialNumber(){
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");

System.out.println(serial);
}
catch (Exception ignored) {

        } 
        return serial;
 }

或者String SN1 = android.os.Build.SERIAL;
但是试验过发现,部分手机显示为null,还有两部ZTE手机显示一样:0123456789ABCDEF,但是在adb devices下显示为:ZTE_U807 ZTE_U817 (与手机型号一样)。谁有这方面知识,分析一下,谢谢。