检测Multi-Sim设备中来电的目标SimCard

Ali*_*ali 12 java android broadcastreceiver dual-sim incoming-call

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

它为第一个 SimCard 和第二个 SimCard 显示具有相同值 0 的相同日志。

我也试过其他类似的帖子。没有人在新版本的 android 上工作!

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

dgp*_*dgp 2

正式地,意图提供的唯一记录值是电话号码。

一些构造函数在意图中添加其他值,例如 sim 插槽号,但这不是强制性的。这就是为什么可能有如此多的槽键名称,就像第 3 篇文章中介绍的那样,每个构造函数都添加了自己的实现。

某些构造函数也可能没有在某些模型中添加此值,您的模型肯定就是这种情况。如果构造函数不传递该值,则无法找到该值。