经过对论坛的大量研究,现在我知道在双SIM卡手机中无法找到两张SIM卡的IMSI或SIM序列号(除了联系制造商).现在我改变的问题是,我们可以检测到手机有两个SIM吗?我相信它可以用一些智慧来检测.我能想到的几个方法是:
拨打USSD代码并跟踪IMEI号码的日志(我在印度尝试使用*139#.它有效.)这将给我SIM卡的IMEI号,我从中拨打了USSD代码.(假设手机遵循Android指南并且有两个IMEI号码.)
存储SIM的SIM序列号和/或IMSI.并且在检测到任何其他IMSI /序列号之后,即使手机没有重新启动(即SIM切换),也可以通过跟踪某些日志或某些广播事件处理来实现.
通过拨打*06#,您将看到两个IMEI号码.通过某种方式,获得这两个数字.(像屏幕捕获和文本图像解析之类的东西.)
如果有人能想到其他方式,他们是最受欢迎的.我真的很感激这方面的任何帮助.此外,如果任何人有关于任何制造商API或链接的任何信息,请与社区人员分享.
关于通过Android SDK访问双SIM卡功能有几个问题,所有这些问题都通过简短的声明来回答,这些声明在Android中不支持这些功能.
尽管如此,双SIM卡手机确实存在,而像MultiSim这样的应用似乎能够以某种独立于制造商的方式检测到这一点.
所以,从这个承认开始,让我试着提出一些更尖锐的问题:
(顺便说一下,所有这一切只是为了实现这个算法:用SIM卡1发送短信;如果发送失败,切换到SIM卡2并重新发送消息.)
我已经阅读了很多帖子并尝试了很多解决方案,但所有帖子的共同点是它们都已经过时了,至少我找不到适用于较新版本的 Android 的解决方案。
发布 1,结果:
intent.getExtras().getInt("simId", -1)总是返回 -1
发布 2,结果:intent.getExtras().getInt("slot", -1)总是返回 -1
帖子 3,结果:
String[] array = new String[]{
"extra_asus_dial_use_dualsim",
"com.android.phone.extra.slot",
"slot",
"simslot",
"sim_slot",
"subscription",
"Subscription",
"phone",
"com.android.phone.DialingMode",
"simSlot",
"slot_id",
"simId",
"simnum",
"phone_type",
"slotId",
"slotIdx"
};
for (String item :
array) {
Log.i(TAG, "Sim Card - " + item + " -----> " + intent.getExtras().getInt(item));
}
Run Code Online (Sandbox Code Playgroud)
日志:
PhoneCallReceiver: Sim Card - extra_asus_dial_use_dualsim -----> 0
PhoneCallReceiver: Sim Card - com.android.phone.extra.slot -----> 0
PhoneCallReceiver: Sim Card …Run Code Online (Sandbox Code Playgroud)