IMEI
IMEI国际移动设备识别码(IMEI:International Mobile Equipment Identity)是区别移动设备的标志,储存在移动设备中,可用于监控被窃或无效的移动设备。它与每台手机一一对应,而且该码是全世界唯一的。每一部手机在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。IMEI码由GSM(全球移动通信协会)统一分配,授权BABT(英国通信认证管理委员会)审受。
Android获取IMEI码方式:
单卡:
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE)
tm.getImei();
双卡:
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
for (int slot = 0; slot < tm .getPhoneCount(); slot++) {
String imei = tm .getImei(slot);
}
ANDROID_ID
64位数字(表示为十六进制字符串),对于app-signing键,用户和设备的每个组合都是唯一的。ANDROID_ID通过签名密钥和用户确定范围的值。如果在设备上执行恢复出厂设置或APK签名密钥更改,则该值可能会更改。
64位数字(表示为十六进制字符串)是在用户首次设置设备时随机生成的,并且应该在用户设备的生命周期内保持不变。在具有 多个用户的设备上 ,每个用户都显示为完全独立的设备,因此该ANDROID_ID值对每个用户都是唯一的。
常量值:“android_id”
Android获取ANDROID_ID方式:
String ANDROID_ID = Settings.System.getString(getContentResolver(),Settings.System.ANDROID_ID);
adb获取ANDROID_ID:
adb shell settings get secure android_id
注意两者的区别:
IMEI,即所谓的DeviceID,是设备唯一的ID,是固定不变的;
ANDROID_ID,是随系统变化的,是系统唯一的ID,是系统第一次启动时随机产生的64bit数,重新刷系统后,会变化。