如何获取IMEI号和MEID号

简介: 如何获取IMEI号和MEID号

IMEI号是GSM的概念,CDMA对应的是MEID号。


IMEI(International Mobile Equipment Identity)是国际移动设备身份码,目前GSM/WCDMA/LTE手机终端需要使用IMEI号码。在单卡工程中一个手机对应一个IMEI号;双卡工程中一张卡对应一个IMEI号,双卡共有两个IMEI号。


MEID (Mobile Equipment Identifier) 移动设备识别码,是CDMA手机的唯一身份识别码。


通过GSMPhone对象来调用getDeviceId()函数,获取到的就是IMEI号。


通过CDMAPhone对象来调用getDeviceId()函数,获取到的就是MEID号。


一、如何获取IMEI号


M0.mp7/M0.mp9版本(包含C2K和非C2K项目)、


M0.mp1版本非C2K项目、


L版本非C2K项目上:


GSMPhone.java中的getDeviceId()


L上面已经没有GeminiPhone;


使用方法如下:

Phone mPhone1=PhoneFactory.getPhone(PhoneConstants.SIM_ID_1);
Phone mPhone2=PhoneFactory.getPhone(PhoneConstants.SIM_ID_2);
if (mPhone1 != null) {
    String imei_sim1 =  mPhone1.getDeviceId();
}
if (mPhone2 != null) {
    String imei_sim2 =  mPhone2.getDeviceId();
}

M0.mp1版本C2K项目、

L版本C2K项目上:

L版本C2K项目上,一张卡同时对应一个CDMAPhone和一个GSMPhone,要获取对应卡的IMEI号,需要先获取到对应的GSMPhone对象,具体可以通过下面的方法来获取:

SIM1-> CDMAPhone = PhoneFactory.getPhone(0).getNLtePhone()
SIM1-> GSMPhone = PhoneFactory.getPhone(0).getLtePhone()
SIM2->  CDMAPhone = PhoneFactory.getPhone(1).getNLtePhone()
SIM2->  GSMPhone = PhoneFactory.getPhone(1).getLtePhone()

获取到GSMPhone对象后,通过该对象来调用getDeviceId()函数。


KK版本上:


GSMPhone.java 中getDeviceId()


GeminiPhone.java 其中getDeviceIdGemini()已经没有了,而getDeviceId()获取的是default phone的IMEI;


所以直接使用GSMPhone.java中getDeviceId()方法;

Demo code:
GeminiPhone mGeminiPhone;
String imei_sim1=mGeminiPhone.getPhonebyId(PhoneConstants.GEMINI_SIM_1).getDeviceId();
String imei_sim2=mGeminiPhone.getPhonebyId(PhoneConstants.GEMINI_SIM_2).getDeviceId();


KK之前的版本:

下面是获得IMEI号的接口和demo code

API:

GSMPhone.java 中getDeviceId()

GeminiPhone.java 中getDeviceId() 和 getDeviceIdGemini()

Demo code:
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.gemini.GeminiPhone;
import com.android.internal.telephony.PhoneFactory;  
Phone phone;
phone = PhoneFactory.getDefaultPhone();
String  imei=(GeminiPhone)phone.getDeviceId();
GeminiPhone mGeminiPhone;
String imei_sim1 = mGeminiPhone.getDeviceIdGemini(PhoneConstants.GEMINI_SIM_1);
String imei_sim2 = mGeminiPhone.getDeviceIdGemini(PhoneConstants.GEMINI_SIM_2);

二、如何获取MEID号


M0.mp7/M0.mp9版本C2K项目:


通过CDMAPhone.java的getDeviceId()函数来获取。


请在插入电信卡的情况下调用,避免插入非电信卡没有创建CDMAPhone对象,会获取不到。


M0.mp1版本C2K项目、


L版本C2K项目上:


参考上面的说明,要获取MEID号,需要先获取对应卡的CDMAPhone对象,具体可以通过下面的方法来获取:


SIM1-> CDMAPhone = PhoneFactory.getPhone(0).getNLtePhone()
SIM1-> GSMPhone = PhoneFactory.getPhone(0).getLtePhone()
SIM2->  CDMAPhone = PhoneFactory.getPhone(1).getNLtePhone()
SIM2->  GSMPhone = PhoneFactory.getPhone(1).getLtePhone()


获取到CDMAPhone对象后,通过该对象来调用getDeviceId()函数。


如果电信卡插在卡1上,则使用上面SIM1的方法来获取卡1的CDMAPhone对象。


如果电信卡插在卡2上,则使用上面 SIM2 的方式来获取卡2的CDMAPhone对象。


如果同时插入两张电信卡,由于同一时刻只支持一张电信卡,则只有主卡可以获取到MEID号,可以通过PhoneFactory.getDefaultPhone().getNLtePhone() 来获取主卡的CDMAPhone对象。

目录
相关文章
|
5G 数据安全/隐私保护
5G终端标识SUPI,SUCI及IMSI解析
IMSI,SUPI,SUCI均为UE终端标识,区别在于IMSI为LTE终端标识,SUPI为5G非加密终端标识,一般等同于IMSI,SUCI为5G加密终端标识,需要解密后才能得到SUPI。
2434 0
5G终端标识SUPI,SUCI及IMSI解析
|
监控 安全 JavaScript
浅谈移动端设备标识码:DeviceID、IMEI、IDFA、UDID和UUID
场景 : 客户提出一个问题就是把用户的登录记录和设备绑定到一起,就是每个人都是固定的设备(可能是安全因素吧)。一开始想的是回去设备的IMEI号和用户账号绑定起来,结果发现IMEI不对外开发,只能另寻他法,最后通过获取设备序列号作为唯一标识。
浅谈移动端设备标识码:DeviceID、IMEI、IDFA、UDID和UUID
|
1月前
|
安全 开发者 iOS开发
如何获取安全获取苹果udid,imei
【8月更文挑战第12天】在iOS系统中,苹果出于隐私考量已禁止开发者直接获取设备UDID与IMEI。替代方案包括:1) **供应商标识符** (`[UIDevice currentDevice].identifierForVendor`),适用于同一开发者账号下的应用,可能随应用卸载重装而变化;2) **广告标识符** (`[ASIdentifierManager sharedManager].advertisingIdentifier`),用于广告追踪,用户可选择重置或限制。处理这些标识符时务必遵守苹果隐私政策。
如何获取openid
如何获取openid
137 0
|
Web App开发 网络虚拟化 iOS开发
如何获取苹果设备的UDID(iPhone/iPad UDID查询方法)
如何获取苹果设备的UDID(iPhone/iPad UDID查询方法)
|
开发工具 开发者 iOS开发
IDFA的检测。
关于IDFA,在提交应用到App Store时,iTunes Connect有如下说明:
195 0
|
存储 Java Android开发
2022最新手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)教程
2022最新手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)教程
1176 0
2022最新手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)教程
|
存储 安全 iOS开发
iOS开发 - 继udid,Mac地址等一系列唯一标识无效后,如何用KeyChain来实现设备唯一性
iOS开发 - 继udid,Mac地址等一系列唯一标识无效后,如何用KeyChain来实现设备唯一性
456 0
iOS开发 - 继udid,Mac地址等一系列唯一标识无效后,如何用KeyChain来实现设备唯一性
|
存储 Web App开发 JSON
iOS小技能:设备ID除了使用_idfa、_idfv 还可使用其他替代方案(Keychain 存储)
设备信息的获取:除了使用_idfa、_idfv, 还使用sysct 获取cpu信息。
350 0
iOS小技能:设备ID除了使用_idfa、_idfv 还可使用其他替代方案(Keychain 存储)