在DualSim Mobile

时间:2017-03-25 14:17:35

标签: android

我一直在寻找这个但是没有取得好成绩 我正在尝试使用指定的sim来从应用内部拨打电话 字符串x是这样的:“OK> message> * 111> 1>>>”

public void test_call(String x) {
    String simSlotName[] = {
            "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"
    };
    String encodedHash = Uri.encode("#");
    String[] data = x.split(">");
    if (!data[4].equals("1") && !data[4].equals("0")) {
        Log.d("data :", "E:" + data[4]);
        G.is_busy = 0;
        return;
    }
    String ussd = data[3] + encodedHash;
    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ussd));
    Log.d("Sim",data[4]);
    intent.putExtra("com.android.phone.force.slot", true);
    for (String s : simSlotName) {
        Log.d("S","s :"+s+"="+data[4]);
        intent.putExtra(s, data[4]); // 0 for sim1 , 1 for sim2
    }

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
        Toast.makeText(this,
                "Call failed, please try again later.",
                Toast.LENGTH_SHORT).show();
        return;
    }
    //this.startActivityForResult(intent,1);
    startActivity(intent);
    G.needscall = "";
}

这是正常工作除了它总是使用sim 0,即使移动设备中的默认SIM卡是SIM 1! (Android 5.1.1)
这只是使用早期版本中的默认SIM 删除此行

intent.putExtra(s, data[4]);

使应用程序使用默认的SIM卡拨打(5.1.1)
..

帮助:(

1 个答案:

答案 0 :(得分:0)

使用huawei gr5 2017(Android 6.0)来解决这个问题,我发现内置的True Caller应用程序无法从指定的SIM卡拨号。它只使用默认的SIM卡。 所以如果应用程序不是系统应用程序,我想这无法解决。