Android : Vérifier si le téléphone est dual SIM
Après beaucoup de recherches sur les forums, maintenant, je sais qu'il n'y a pas moyen de trouver IMSI ou SIM numéro de série pour les deux cartes SIM dans un téléphone dual SIM (sauf pour contacter le fabricant). Maintenant, ma changé la question est, pouvez-nous détecter que le téléphone a deux SIMs? Je crois qu'il peut être détecté avec un peu d'intelligence. Quelques façons que je peux penser sont:
-
Composition d'un code USSD et de suivi dans les journaux numéro IMEI (j'ai essayé cela avec *139# en Inde. Il a travaillé.) Cela va me donner le numéro IMEI de la carte SIM à partir de laquelle j'ai composé le code USSD. (Il est présumé que le téléphone android suit les lignes directrices et a deux numéros IMEI.)
-
Le stockage de la carte SIM numéro de série et/ou IMSI de la carte SIM. Et après la détection de toute autre IMSI/numéro de Série, même si le téléphone n'a pas été redémarré (c'est à dire la carte SIM a été commuté) en traçant certains journaux ou par un événement de diffusion de la manipulation.
-
En composant le *06#, vous obtiendrez de voir les deux numéros IMEI. En quelque sorte, obtenir ces deux nombres. (Quelque chose comme de capture d'écran et de l'image de l'analyse de texte.)
Si quelqu'un peut penser à d'autres façons, ils sont la plupart de bienvenue. J'apprécierais vraiment de l'aide à ce sujet. Aussi, si quelqu'un a des informations à propos de tous les fabricants d'Api ou des liens pour les contacter, merci de faire partager avec la communauté des gens.
- Salut Rajkiran, j'ai Finalement trouvé la solution sa fonctionne très bien pour moi. Espérons qu'il devrait utiles pour tous ceux qui veulent gérer le Duel de la SIM dans les applications mobiles. Le duel SIM poignée de l'API n'est pas documentée. Veuillez vérifier ma réponse à sa fonctionne très bien pour moi. stackoverflow.com/questions/17618651/...
- Merci.. mais votre réponse ne répond pas à ma question. Je veux tous les détails à propos de la deuxième carte SIM et le numéro IMEI. @Pipo réponse m'aide à tout.
- Pied Piper de réponse vraiment vous a aidé? J'ai vérifié son code en m samsung galaxy y duos mais sa ne fonctionne pas.Saviez-vous m'aider à trouver l'IMEI nos de téléphone dual sim?
- Oui certainement, il a aidé. Je n'ai malheureusement pas Y Duos pour vérifier. Mais je crois que Samsung utilise un autre mécanisme de double SIM de la manipulation sur la version android 4.0 et ultérieures. Pied Pipers réponse aide de la version 4.0 à partir de périphériques. Pour le reste, vous aurez besoin de creuser un peu plus l'aide de la réflexion.
- Salut, j'ai trouver une Solution...merci de vérifier le code stackoverflow.com/a/32304799/3131373 Il est testé sur différents téléphones
- toute solution avec cordova?
- Je ne pense pas que je sais que beaucoup de Cordova, mais ne peut pas vous écrire une méthode qui va appeler Android code Natif?
- Vous pouvez essayer d'utiliser
MultiSim
bibliothèque: stackoverflow.com/a/41544422/1665964
Vous devez vous connecter pour publier un commentaire.
Mise À Jour 23 Mars'15 :
Autre option possible :
Vous pouvez utiliser réflexion Java à obtenir à la fois le numéro d'IMEI.
À l'aide de ces numéros IMEI, vous pouvez vérifier si le téléphone est un DUAL SIM ou pas.
Essayer d'activité suivants :
Et voici
TelephonyInfo.java
:Edit :
D'avoir accès à des méthodes comme le "getDeviceIdGemini" pour les autres slot pour carte SIM du détail a de prédiction de la méthode existe.
Si cette méthode est le nom ne correspond pas avec celle donnée par le fabricant de l'appareil que cela ne fonctionnera pas. Vous devez trouver la méthode correspondante nom pour ces dispositifs.
Trouver des noms de méthode pour les autres fabricants peut être fait à l'aide de Java réflexion comme suit :
EDIT :
Comme Seetha a souligné dans son commentaire :
Il travaille pour elle. Elle a réussi à obtenir deux numéros IMEI pour à la fois la carte SIM Samsung Duos appareil.
Ajouter
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
EDIT 2 :
La méthode utilisée pour la récupération des données est pour Lenovo A319 et d'autres téléphones par que la fabrication (Crédit Maher Abuthraa):
Samsung
. Mais de toute façonI couldn't
. Pouvez vous s'il vous plaît vérifier sur le Samsung dual SIM téléphones et laissez-nous savoir? Si possible, veuillez me contacter par mon profil.com.android.internal.telephony.RILConstants$SimCardID
en interne. Même essayé de la création de la classe avec la même signature que les méthodes et les mêmes noms de variables. Mais pas de chance. Va essayer d'obtenir le code source et va essayer de contrôler. Merci."getSimStateDs"
, ce ne semblent pas tous les noms de ces deux méthodes, j'ai trouvé ces infos sur ce forum, plus de 200+ téléphone imprimer leurs informations: 4pda.ru/forum/lofiversion/index.php?t632334.htmltelephonyManager.getDeviceId()
quand ciblant Android > M, il y aura une erreur: Appel nécessite une autorisation qui peut être rejetée par l'utilisateur: code explicite de vérifier pour voir si l'autorisation est disponible (avec checkPermission) ou de traiter explicitement un potentiel SecurityExceptionJ'ai un Samsung Duos appareil avec Android 4.4.4 et la méthode suggérée par Seetha dans l'acceptation de la réponse (c'est à dire appel getDeviceIdDs) ne fonctionne pas pour moi, que la méthode n'existe pas. J'ai été en mesure de récupérer toutes les informations dont j'avais besoin en appelant la méthode "getDefault(int slotID)", comme indiqué ci-dessous:
Aussi, j'ai réécrit le code de manière itérative tests pour les méthodes pour récupérer cette information de sorte qu'il utilise un tableau de noms de méthode au lieu d'une séquence de try/catch. Par exemple, pour déterminer si nous avons deux SIMs actifs que nous pourrions faire:
De cette façon, si un nouveau nom de la méthode est suggérée pour certains appareils, il vous suffit de l'ajouter à la matrice et cela devrait fonctionner.
Il y a plusieurs natifs des solutions que j'ai trouvé lors de la recherche de la façon de vérifier l'exploitant de réseau.
Pour API >=17:
Dans AndroidManifest ajouter la permission:
Pour obtenir de l'opérateur réseau, vous pouvez vérifier la mcc et mnc codes:
Pour API >=22:
Pour API >=23. De simplement vérifier si le téléphone est à double/triple/nombre de sim:
Je suis capable de lire à la fois le numéro IMEI de OnePlus 2 Téléphone
J'ai été jeter un coup d'oeil sur les journaux d'appels et j'ai remarqué qu'en dehors de l'habituel champs dans le contenu de managedCursor, nous avons une colonne "simid" dans les téléphones Dual SIM (j'ai vérifié sur Xolo A500s Lite), de manière à baliser un appel dans le journal des appels avec un SIM. Cette valeur est 1 ou 2, plus probablement, dénotant de la carte SIM1/SIM2.
Je n'ai pas trouvé cette colonne en une seule SIM de téléphone (j'ai vérifié sur Xperia L).
Bien que je ne pense pas que c'est un moyen infaillible pour vérifier dual SIM nature, je suis le poster ici, car il pourrait être utile à quelqu'un.
Conseils:
Vous pouvez essayer d'utiliser
ctx.getSystemService("phone_msim")
au lieu de
ctx.getSystemService(Context.TELEPHONY_SERVICE)
Si vous avez déjà essayé Vaibhav la réponse de
telephony.getClass().getMethod()
échoue, c'est ce qui fonctionne pour mon Qualcomm mobile.Commonsware dit ce n'est pas possible. Veuillez consulter les documents suivants:
La détection de Double carte SIM à l'aide du kit SDK d'Android n'est pas possible.
Encore un dialogue sur le sujet:
Google dev team gars dit la détection de Double carte SIM à l'aide du kit SDK d'Android n'est pas possible.
TelephonyManager
's méthodes se terminant avecGemini
. E. g.String getLine1NumberGemini(int slotId)
, oùslotId
est le numéro séquentiel de la carte sim (0, 1). Ces méthodes peuvent être appelés par l'intermédiaire de réflexion seulement.J'ai trouvé ces propriétés système sur Samsung S8
Aussi, selon la source: https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/com/android/internal/telephony/TelephonyProperties.java
getprop persist.radio.multisim.config
renvoie "dsds
" ou "dsda
" sur multi sim.J'ai testé sur Samsung S8 et il fonctionne