Make call using a specified SIM in a Dual SIM Device Make call using a specified SIM in a Dual SIM Device android android

Make call using a specified SIM in a Dual SIM Device


Code:

private final static 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"};Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "any number"));    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    intent.putExtra("com.android.phone.force.slot", true);    intent.putExtra("Cdma_Supp", true);    //Add all slots here, according to device.. (different device require different key so put all together)    for (String s : simSlotName)        intent.putExtra(s, 0); //0 or 1 according to sim.......    //works only for API >= 21    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)        intent.putExtra("android.telecom.extra.PHONE_ACCOUNT_HANDLE", (Parcelable) " here You have to get phone account handle list by using telecom manger for both sims:- using this method getCallCapablePhoneAccounts()");    context.startActivity(intent);


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:" + number));        intent.putExtra("com.android.phone.force.slot", true);        intent.putExtra("Cdma_Supp", true);        if (simselected== 0) {   //0 for sim1            for (String s : simSlotName)                intent.putExtra(s, 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 {      1 for sim2            for (String s : simSlotName)                intent.putExtra(s, 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);


I have an answer for this problem as I was looking for this option. Here are the steps:

  • first you need xposed framework and;
  • install miui application and;
  • add preferred sim option in contact