是否可以使用getDeviceId在Android双SIM卡设备中获得不同的IMEI

时间:2015-03-04 10:21:11

标签: android

我使用双卡手机,在拨打*#06#时,我收到两个IMEI号码(IMEI1 = ***973 & IMEI2 = ***980)

尝试使用telePhonyManager.getDeviceId()时,我总是***973(IMEI1)

TelephonyManager mngr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        textView.append("IMEI Number: " + mngr.getDeviceId());

在我的应用程序中,我将使用IMEI号作为用户的唯一参考。

在搜索时,某些网站发布了getDeviceId()可能返回***980(IMEI2)。 我的问题是,将来有可能getDeviceId()方法返回***980(IMEI2)?

2 个答案:

答案 0 :(得分:2)

您的问题的简短答案是,没有万无一失的编写代码的方法可以检索双SIM卡手机的两个IMEI号码。官方AOSP仅支持单SIM卡使用,所有具有双SIM功能的设备都已经由手机制造商修改了操作系统源代码。

如果手机在两个插槽中都有两个SIM卡,则默认情况下会检索第一个插槽的IMEI号,如果一个电话在任一插槽中只有一个SIM卡,则占用插槽的IMEI号(第一个)或者第二个)默认检索。这是我在MicromaxHTC手机上观察到的行为,但我怀疑这也与实现有关。

我建议你编写代码,使其不依赖于多个SIM卡;优选地,不应该将手机的IMEI号用于任何东西,因为在将来的Android版本中可能会删除它。 iOS已经阻止开发人员访问IMEI号。

a post on SO作者使用了一种非常创新的技术 - 即反射 - 来获取在双SIM卡手机上获取第二个IMEI号码的方法的名称。非常有趣,但几乎不可能在生产代码中使用。

答案 1 :(得分:0)

使用API​​级别23,Android启用getDeviceId(slotIndex)以获得双SIM卡手机的不同IMEI / MEID。要获得广告位数,请致电getPhoneCount()