多卡设备中检测来电目标Sim卡

13

我已经阅读了很多帖子并尝试了许多解决方案,但所有帖子的共同点都是它们都过时了,至少我无法找到适用于较新版本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));
}

日志:

PhoneCallReceiver: Sim Card - extra_asus_dial_use_dualsim -----> 0
PhoneCallReceiver: Sim Card - com.android.phone.extra.slot -----> 0
PhoneCallReceiver: Sim Card - slot -----> 0
PhoneCallReceiver: Sim Card - simslot -----> 0
PhoneCallReceiver: Sim Card - sim_slot -----> 0
PhoneCallReceiver: Sim Card - subscription -----> 0
PhoneCallReceiver: Sim Card - Subscription -----> 0
PhoneCallReceiver: Sim Card - phone -----> 0
PhoneCallReceiver: Sim Card - com.android.phone.DialingMode -----> 0
PhoneCallReceiver: Sim Card - simSlot -----> 0
PhoneCallReceiver: Sim Card - slot_id -----> 0
PhoneCallReceiver: Sim Card - simId -----> 0
PhoneCallReceiver: Sim Card - simnum -----> 0
PhoneCallReceiver: Sim Card - phone_type -----> 0
PhoneCallReceiver: Sim Card - slotId -----> 0
PhoneCallReceiver: Sim Card - slotIdx -----> 0

它显示相同的日志,第一个Sim卡和第二个Sim卡的值为0。

我也尝试过其他类似的帖子。但在新版本的Android上都不起作用!

是否有另一种解决方案适用于较新版本的Android(7.0或更高版本)?


intent.getExtras().getInt("item") <--你不应该使用"item"而不是item吗? - Michael
另外,你是否尝试打印出Intent包含的所有额外内容,以查看命名是否与你所假设的不同? - Michael
无论是使用 "item" 还是 item,它总是返回 0。 - Alireza Noorali
好的,“item”在这个上下文中几乎肯定是不正确的。像我说的那样,尝试打印你拥有的东西而不是你期望的东西。虽然整个解决方案看起来有点像一个hack,所以你找到的任何可用的密钥仍然可能无法在某些设备上使用。 - Michael
1个回答

2

官方文档中,唯一记录的数值是手机号码。

一些构造函数可能会在意图中添加其他值,例如sim卡槽号码,但这不是强制性的。这就是为什么有很多可用的卡槽键名,例如帖子3中提到的键名,每个构造函数都会添加自己的实现。

在某些型号上,可能有些构造函数没有添加此值,这肯定是您的情况。如果构造函数没有提供此值,则无法找到该值。


1
因为答案只是一个解释,我不能明确地批准或拒绝它。但事实证明,这个答案是合乎逻辑的。 - Alireza Noorali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接