国际移动设备识别码(IMEI:International Mobile Equipment Identification Number)是区别移动设备的标志,储存在移动设备中,可用于监控被窃或无效的移动设备。IMEI可用移动终端设备通过键入“*#06#”查得(不同厂商的手机所需输入的内容不同,同一厂商不同手机所需输入的内容也可能不同)。其总长为15位,每位数字仅使用0~9的数字(含义见下文)。
获取IMEI的方法如下:1)通过TelephonyManager.getDeviceId(); 2)如果通过第一种方式获取不到,则可以通过WiFiManager.getConnectInfo().getMacAddress(),将:去除即可;3)通过Java的UUID.randomUUID(),去除其中的-即可。
private String getIMEI() {
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imei = telephonyManager.getDeviceId();
boolean isImei = check(imei);
if (!TextUtils.isEmpty(imei)) {
isImei = check(imei);
if (isImei)
return imei;
}
if (TextUtils.isEmpty(imei) || !isImei) {
// start get mac address
WifiManager wifiMan = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (wifiMan != null) {
WifiInfo wifiInf = wifiMan.getConnectionInfo();
if (wifiInf != null && wifiInf.getMacAddress() != null) {//48位,如FA:34:7C:6D:E4:D7
imei = wifiInf.getMacAddress().replaceAll(":", "");
return imei;
}
}
}
if (TextUtils.isEmpty(imei) || !isImei) {
imei = UUID.randomUUID().toString().replaceAll("-", "");//UUID通用唯一识别码(Universally Unique Identifier)(128位,如3F2504E0-4F89-11D3-9A0C-0305E82C3301)
}
return imei;
}
另外,获取手机型号代码:实质上是通过Build.MODEL
//Build.MODEL(手机型号,如MotoA953)
private String getDeviceModel() {
Build bd = new Build();
String model = bd.MODEL;
return model;
}