如何在没有调用所有双卡Android手机上的系统SIM选择器的情况下直接拨打指定SIM卡的号码?

时间:2017-11-21 13:30:24

标签: android android-intent

  

我搜索并阅读了与此问题相似的所有问题和答案,但非解决了我的问题。

我想制作一个拨打号码的应用。但问题是系统弹出窗口要求用户选择SIM卡。 我希望系统和系统直接使用此SIM卡来处理这些信息(系统应通过哪个系统调用SIM而不要求用户选择SIM卡)。 所以我想在我的应用程序中使用此流程:

用户按下按钮 - >系统通过SIM 1

进行呼叫

用户按下按钮 - >系统通过SIM 2进行呼叫

本网站上的大多数答案都说不可能完成这样的任务,

  

但是Trucaller正在使用这个类似的功能,您可以按下该号码,并在没有系统交互的情况下使用SIM 1或SIM 2直接拨打该号码。

如果您需要更多说明或我的问题中缺少某些内容,请与我们联系。

1 个答案:

答案 0 :(得分:0)

试试这段代码:

    //0 or 1 
    int simSelected = 0;
    TelecomManager telecomManager = (TelecomManager) this.getSystemService(Context.TELECOM_SERVICE);
    List<PhoneAccountHandle> phoneAccountHandleList = telecomManager.getCallCapablePhoneAccounts();
    Intent intent = new Intent(Intent.ACTION_CALL).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setData(Uri.parse("tel:" + "PHONE_NUMBER"));
    intent.putExtra("com.android.phone.force.slot", true);
    if (simSelected == 0) {   //0 for sim1
        intent.putExtra("com.android.phone.extra.slot", 0); //0 or 1 according to sim.......
        if (phoneAccountHandleList != null && phoneAccountHandleList.size() > 0)
            intent.putExtra("android.telecom.extra.PHONE_ACCOUNT_HANDLE", phoneAccountHandleList.get(0));
    } else {    //0 for sim1
        intent.putExtra("com.android.phone.extra.slot", 1); //0 or 1 according to sim.......
        if (phoneAccountHandleList != null && phoneAccountHandleList.size() > 1)
            intent.putExtra("android.telecom.extra.PHONE_ACCOUNT_HANDLE", phoneAccountHandleList.get(1));
    }
    startActivity(intent);