web-dev-qa-db-fra.com

Passer un appel en utilisant une carte SIM spécifiée dans un appareil à double carte SIM

Je cherchais cela depuis quelques jours et j'ai appris que:

"La carte double SIM n'est pas prise en charge immédiatement dans Android. Il s'agit d'une modification personnalisée par les fabricants et aucune API publique ne permet de la contrôler."

Le lien ci-dessous contient une solution, mais elle ne fonctionne pas sur mon téléphone Samsung Galaxy S4 Mini.

Appel de deuxième sim

J'ai aussi trouvé ce lien, que j'ai trouvé très instructif.

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

Maintenant, je sais qu’en utilisant le code suivant, j’aurai peut-être une chance de le faire fonctionner:

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

Je ne suis pas sûr de cela, mais j'ai une question. 

Dans les paramètres de la section Gestionnaire de carte SIM, lorsque je dois choisir une carte SIM préférée pour les appels vocaux, quatre options s'offrent à vous:

  1. Réseau actuel
  2. Demandez toujours
  3. SIM 1
  4. SIM 2

Lorsque je choisis l'option Demander toujours, avant de passer un appel, on me demande toujours de choisir une carte SIM, affichée dans une boîte de dialogue, pour passer l'appel. Ma question est la suivante: puis-je exploiter cette chose dans mon application lorsque j'appuie sur un bouton pour passer un appel mais me demande toujours la même chose que lorsque je choisis l'option Toujours demander. 

Je suis désolée, la question a été longue, mais je pense qu'elle l'exigeait. S'il vous plaît aider et grand merci d'avance.

MODIFIER:

Comment y parvenir, chaque fois que j'appuie sur un bouton (similaire à l'option Demander toujours dans Paramètres): Select SIM Dialog Box

17
class Android

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);
9
Ajay Rawat
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);
3
dipanshu jindal

J'ai une réponse à ce problème car je cherchais cette option. Voici les étapes:

  • vous avez d’abord besoin du framework xposed et;
  • installer l'application miui et; 
  • ajouter l'option de simulation préférée en contact
0
Raj Singhania