首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多Sim设备中呼叫目标SimCard的检测

多Sim设备中呼叫目标SimCard的检测
EN

Stack Overflow用户
提问于 2019-11-16 09:02:26
回答 2查看 643关注 0票数 11

我读过很多帖子,尝试过很多解决方案,但所有帖子的共同点是,它们都过时了,至少我找不到一种适用于Android更新版本的解决方案。

员额1,结果:intent.getExtras().getInt("simId", -1)总是返回-1

员额2,结果:intent.getExtras().getInt("slot", -1)总是返回-1

员额3,结果:

代码语言:javascript
复制
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));
}

日志:

代码语言:javascript
复制
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

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-20 21:50:46

正式而言,唯一记录在案的价值提供的意图是电话号码。

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

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

票数 1
EN

Stack Overflow用户

发布于 2020-01-14 09:46:25

如果你这样做了,它就会起作用的。确保您的测试设备在Android5.1或更高版本上运行。在V5.1中添加了双sim支持(请检查这里)

代码语言:javascript
复制
public class IncomingCallInterceptor extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
    String callingSIM = "";
    Bundle bundle = intent.getExtras();
    callingSIM = String.valueOf(bundle.getInt("simId", -1));

    if(callingSIM.equals("0")){
           // Incoming call from SIM1
        } else if(callingSIM.equals("1")){
           // Incoming call from SIM2
        }
    }
}

确保在清单中添加了以下权限

代码语言:javascript
复制
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

注:

这些价值观不需要时时刻刻出现。网络提供者支持是必需的.Please阅读文档这里

当前订阅的载体id。如果订阅不可用或无法识别承运人,则返回UNKNOWN_CARRIER_ID。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58889106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档