使用 android.telephony.TelephonyManager.getDeviceId() 时,双 sim android 手机是不是总是返回相同的 IMEI

Posted

技术标签:

【中文标题】使用 android.telephony.TelephonyManager.getDeviceId() 时,双 sim android 手机是不是总是返回相同的 IMEI【英文标题】:Does a dual sim android phone always return same IMEI when using android.telephony.TelephonyManager.getDeviceId()使用 android.telephony.TelephonyManager.getDeviceId() 时,双 sim android 手机是否总是返回相同的 IMEI 【发布时间】:2014-12-29 01:24:27 【问题描述】:

我看到很多帖子说安卓文档不支持双卡手机。

在我的情况下,我想识别设备,以便我可以将其IMEI 存储在我的服务器上。但是因为手机可能有双卡,所以会使用代码

android.telephony.TelephonyManager.getDeviceId()

每次我运行它时都会返回相同的 IMEI,或者它可能会返回第一个 sim 插槽的 IMEI 并且另一次返回第二个 sim 插槽的 IMEI?

因为我的应用程序将与服务器核对以授予他在该设备上运行的访问权限。因此,如果上面的代码行总是返回相同的 sim 卡插槽的 IMEI,那么我就不用担心手机有双卡了。因为我只想获得与我的应用程序首次在服务器上运行时保存的相同的 IMEI。

所以简而言之,我想知道运行上面的这段代码会一直给我相同的IMEI,还是会随机给我IMEI 的任何sim 插槽以进行不同的运行?

如果我没有说清楚,请告诉我。

【问题讨论】:

你有带两个SIM卡槽的手机吗? 是的,我愿意...它的金立 E3... 我也有同样的疑问。。等待答案。 这个问题有答案吗?我也有一个注册设备 ID 的系统,所以我依靠这个调用来返回始终相同的 IMEI ......不幸的是,我们有一个用户已经注册了一个 IMEI 的情况,但是他无法访问该应用程序,因为突然平台开始从插槽 2 开始响应 IMEI...仍在寻找导致此问题的原因... 【参考方案1】:

在 Android L 之前,没有对双 SIM 卡手机的官方支持。由于 IMEI 被标记到特定的 SIM 卡插槽,因此 TelephonyManager.getDeivceId() 返回的值会因 SIM 卡插入的插槽而异。

您可以查看我的SO,其中我描述了双 SIM 手机在 Android 操作系统正式支持之前返回的值以及一些解决方法。

注意:没有 SIM 卡的平板电脑不会有 IMEI

【讨论】:

【参考方案2】:

在 android L TelephonyManager.java 中有 API 来获取每个插槽的设备。 public String getDeviceId(int slotId)

因此,您可以获得每张 SIM 卡的 IMEI。

【讨论】:

以上是关于使用 android.telephony.TelephonyManager.getDeviceId() 时,双 sim android 手机是不是总是返回相同的 IMEI的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)