Android 10系统及以上IMEI的获取

IMEI是一个15位的数字标识,用于唯一标识移动通信设备,例如手机、平板电脑和调制解调器等。每个移动设备都有一个独特的IMEI号码,它不随SIM卡的更换而改变。IMEI通常被用于跟踪设备的状态、维护、保修和防止盗窃。您可以通过拨打"*#06#"(或类似的代码)来查看您的设备的IMEI号码。

在Android10系统,正常情况下是不允许直接获取到IMEI,而是由系统生成一串虚拟的Android ID
且每个应用的Android ID都不一样,该Android ID除非进行恢复出产设置或者刷机,否则是一直不会改变,这是Google处于隐私考虑,提供给应用开发者一个临时长期的唯一识别码(广告ID)

标准API获取方式:

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imei = telephonyManager.getImei(); // 需要 READ_PHONE_STATE 权限
String meid = telephonyManager.getMeid(); // 需要 READ_PHONE_STATE 权限
String imsi = telephonyManager.getSubscriberId(); // 需要 READ_PHONE_STATE 权限

非标准API获取方式:

service call iphonesubinfo 3 i32 1 | grep -oE '[0-9a-f]{8} ' | while read hex; do echo -ne "\u${hex:4:4}\u${hex:0:4}"; done; echo

猜你喜欢

转载自blog.csdn.net/q85913323/article/details/132157515