國際行動裝置識別碼(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;
}