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.
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:
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):
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);
J'ai une réponse à ce problème car je cherchais cette option. Voici les étapes: