J'ai lu beaucoup de messages et essayé de nombreuses solutions, mais le point commun de tous les messages était qu'ils étaient tous obsolètes et au moins je ne pouvais pas trouver de solution qui fonctionnerait sur les nouvelles versions d'Android.
Post 1 , résultat:
intent.getExtras().getInt("simId", -1)
renvoie toujours -1
Post 2 , résultat: intent.getExtras().getInt("slot", -1)
renvoie toujours -1
Post 3 , résultat:
String[] array = new String[]{
"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"
};
for (String item :
array) {
Log.i(TAG, "Sim Card - " + item + " -----> " + intent.getExtras().getInt(item));
}
Journaux:
PhoneCallReceiver: Sim Card - extra_asus_dial_use_dualsim -----> 0
PhoneCallReceiver: Sim Card - com.android.phone.extra.slot -----> 0
PhoneCallReceiver: Sim Card - slot -----> 0
PhoneCallReceiver: Sim Card - simslot -----> 0
PhoneCallReceiver: Sim Card - sim_slot -----> 0
PhoneCallReceiver: Sim Card - subscription -----> 0
PhoneCallReceiver: Sim Card - Subscription -----> 0
PhoneCallReceiver: Sim Card - phone -----> 0
PhoneCallReceiver: Sim Card - com.android.phone.DialingMode -----> 0
PhoneCallReceiver: Sim Card - simSlot -----> 0
PhoneCallReceiver: Sim Card - slot_id -----> 0
PhoneCallReceiver: Sim Card - simId -----> 0
PhoneCallReceiver: Sim Card - simnum -----> 0
PhoneCallReceiver: Sim Card - phone_type -----> 0
PhoneCallReceiver: Sim Card - slotId -----> 0
PhoneCallReceiver: Sim Card - slotIdx -----> 0
il affiche les mêmes journaux avec la même valeur 0 pour la première SimCard et la seconde SimCard.
J'ai également essayé d'autres articles similaires. Aucun n'a fonctionné sur les nouvelles versions d'Android!
Existe-t-il une autre solution qui fonctionne sur les nouvelles versions d'Android (7.0 ou supérieur)?
java
android
broadcastreceiver
dual-sim
incoming-call
Alireza Noorali
la source
la source
intent.getExtras().getInt("item")
<- Ne devriez-vous pas utiliseritem
plutôt que"item"
?"item"
c'est presque certainement incorrect dans ce contexte. Comme je l'ai dit, essayez d'imprimer ce que vous avez plutôt que ce que vous attendez. Bien que toute cette solution ressemble à un peu de piratage, toute clé utilisable que vous trouvez peut ne pas fonctionner sur certains appareils.Réponses:
Officiellement, la seule valeur documentée fournie par l'intention est le numéro de téléphone.
Certains constructeurs ajoutent d'autres valeurs comme le numéro d'emplacement SIM dans l'intention, mais ce n'est pas obligatoire. C'est pourquoi il y a autant de noms de clés de slot possibles, comme ceux présentés dans le post 3 , chaque constructeur ajoutant sa propre implémentation.
Il est également possible qu'un constructeur n'ait pas ajouté cette valeur dans certains modèles, et c'est certainement le cas sur votre modèle. Il n'y a aucun moyen de trouver cette valeur si le constructeur ne la fournit pas.
la source
Si vous avez fait cela, cela devrait fonctionner. assurez-vous que votre appareil de test fonctionne sur Android 5.1 ou supérieur. le support dual sim est ajouté dans la version 5.1 ( cliquez ici )
Assurez-vous d'avoir ajouté l'autorisation ci-dessous dans le manifeste
REMARQUE :
Ces valeurs n'ont pas besoin de venir tout le temps. l'assistance d'un fournisseur de réseau est requise. Veuillez lire la documentation ici
la source
READ_PHONE_STATE
permission mais j'obtiens toujourscallingSIM = -1