之前发过一篇文章获取
http://blog.csdn.net/hpccn/article/details/7872141
android 设备唯一码的获取,Cpu号,Mac地址
这个方法使用中发现一些不完美的地方.
--------------------------------------
新的方法:
在使用命令行, adb device
adb devices
List of devices attached
0288504643dfbxxx device
^__这个号做为设备的SN号更适合一些.如何获取此值?
使用 adb get-serialno 可以获取 此值
$adb get-serialno
0288504643dfbxxx
一步步查找
$adb shell
$getprop
.... ...
[ro.boot.serialno]: [0288504643dfbxxx]
....
[ro.serialno]: [0288504643dfbxxx]
系统属性中 这两项值相同, 测试多台设备后,此值均相同,
使用Java获取
android.os.SystemProperties.get() 读取系统属性,的方法是系统隐藏,无法直接使用.
我们可以使用Java反射:
static Method systemProperties_get = null;
static String getAndroidOsSystemProperties(String key) {
String ret;
try {
systemProperties_get = Class.forName("android.os.SystemProperties").getMethod("get", String.class);
if ((ret = (String) systemProperties_get.invoke(null, key)) != null)
return ret;
} catch (Exception e) {
e.printStackTrace();
return null;
}
return "";
}
测试代码如下:
运行后,可以看我们读取的设备SN号, 系统恢复出厂设置,刷机,均没改变此SN.
String []propertys = {"ro.boot.serialno", "ro.serialno"};
for (String key : propertys){
// String v = android.os.SystemProperties.get(key);
String v = getAndroidOsSystemProperties(key);
Log.e("", "get " + key + " : " + v);
}
-------完----------
本文介绍了在Android设备上获取唯一SN号的更合适方法,通过`adb get-serialno`命令及Java反射技术读取系统属性`ro.boot.serialno`,该值在设备恢复出厂设置或刷机后保持不变。


被折叠的 条评论
为什么被折叠?



