Выполнение вызова с использованием указанной SIM-карты в устройстве с двумя SIM-картами

Я искал это за последние несколько дней, и я узнал, что:

«Двойная SIM-карта не поддерживается в Android из коробки. Это настраиваемая модификация производителей, и для ее контроля нет публичного API».

В приведенной ниже ссылке есть решение, но оно не работает на моем телефоне Samsung Galaxy S4 Mini.

Звонок со второго сима

Я также нашел эту ссылку, которую я нашел очень информативной.

http://www.devlper.com/2010/06/using-android-telephonymanager/

Теперь я знаю, что, используя следующий код, у меня может быть шанс, что ему повезет, чтобы он работал:

Intent callIntent = new Intent(Intent.ACTION_CALL) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); callIntent.setData(Uri.parse("tel:" + phone)); context.startActivity(callIntent); callIntent.putExtra("com.android.phone.extra.slot", 0); //For sim 1 and callIntent.putExtra("com.android.phone.extra.slot", 1); //For sim 2 

Я не уверен в этом, но у меня есть вопрос.

В разделе «Настройки» в разделе «Диспетчер SIM-карты», когда мне нужно выбрать предпочтительную SIM-карту для голосового вызова, я получаю четыре варианта:

  1. Текущая сеть
  2. Спросите всегда
  3. SIM 1
  4. SIM 2

Когда я выбираю параметр «Спросить всегда», перед выполнением звонка мне всегда предлагается выбрать SIM-карту, отображаемую в диалоговом окне, чтобы позвонить. Мой вопрос: могу ли я использовать эту вещь в своем приложении, где я нажимаю кнопку, чтобы позвонить, но она всегда спрашивает меня так же, как и при выборе параметра «Спросить всегда».

Извините, я долго задавал этот вопрос, но я думаю, что это требовало этого. Пожалуйста, помогите и большое спасибо заранее.

РЕДАКТИРОВАТЬ:

Как я могу добиться этого, каждый раз, когда я нажимаю любую кнопку (вид похожих на параметр «Спросить всегда» в настройках): Выберите диалоговое окно SIM-карты

    Код:

     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 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); 

    У меня есть ответ на эту проблему, поскольку я искал этот вариант. Вот шаги:

    • сначала вам понадобится xposed framework и;
    • установить приложение miui и;
    • добавить предпочтительный сим-вариант в контакт
    Давайте будем гением компьютера.