这今天项目上需要获取安卓手机上的deviceId,试过了网上的很多方法,最后获取的都不是想要的结果。最后在CSDN上看了下面的文章才得以解决问题:
感谢这位大哥!!!
现在回过来头梳理一下:
一般的搜索结果都是用的下面的方法:
TelephonyManager tm = (TelephonyManager)this.getSystem(Context.TELEPHONY_);
String deviceId = tm.getDeviceId();
这样的方式,很多时候获取的是null.
或者通过反射的方式来获取系统属性值:
String serial =null;
try {undefined
Class c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class);
serial = (String) get.invoke(c, "ro.serialno");
}catch (Exception e) {undefined
e.printStackTrace();
}
return serial;
但是这种方式运行时会抛出"Access denied finding property "ro.serialno""这个异常。无法获取到deviceID。
最后发现,通过Build.getSerial()就可以获取到deviceId了。