系统恢复出厂设置,刷机,均没改变此SN.
1.
使用adb get-serialno 可以获取 此值
$adb get-serialno
0288504643dfbxxx
1.
使用adb get-serialno 可以获取 此值
$adb get-serialno
0288504643dfbxxx
2.
$adb shell
$getprop
.... ...
[ro.boot.serialno]: [0288504643dfbxxx]
....
[ro.serialno]: [0288504643dfbxxx]
$adb shell
$getprop
.... ...
[ro.boot.serialno]: [0288504643dfbxxx]
....
[ro.serialno]: [0288504643dfbxxx]
3.
Java获取android.os.SystemProperties.get() 读取系统属性,的方法是系统隐藏,无法直接使用.
我们可以使用Java反射:
Java获取android.os.SystemProperties.get() 读取系统属性,的方法是系统隐藏,无法直接使用.
我们可以使用Java反射:
String []propertys = {"ro.boot.serialno", "ro.serialno"};
for (String key : propertys){
// String v1 = android.os.SystemProperties.get(key);
String v2 = getAndroidOsSystemProperties(key);
Log.e("", "get " + key + " : " + v1);
}
private static String getAndroidOsSystemProperties(String key) {
String ret = "";
try {
Method systemProperties_get = Class.forName("android.os.SystemProperties").getMethod("get", String.class);
if(!systemProperties_get.isAccessible()){
systemProperties_get.setAccessible(true);
}
ret = (String) systemProperties_get.invoke(null, key);
} catch (Exception e) {
e.printStackTrace();
}
if(null == ret){
ret = "";
}
return ret;
}
4.
android.os.build.serial 在API 9 中引入,如果低于9的系统可以通过这个方法获取这个信息值
public static String getDeviceSerial() {
String serial = "unknown";
try {
Class clazz = Class.forName("android.os.Build");
Class paraTypes = Class.forName("java.lang.String");
Method method = clazz.getDeclaredMethod("getString", paraTypes);
if (!method.isAccessible()) {
method.setAccessible(true);
}
serial = (String)method.invoke(null, "ro.serialno");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return serial;
}