Comment puis-je obtenir par programme le numéro de téléphone de l'appareil qui exécute mon application Android?
443
Comment puis-je obtenir par programme le numéro de téléphone de l'appareil qui exécute mon application Android?
Réponses:
Code:
Autorisation requise:
Mises en garde:
Selon les commentaires très positifs, il y a quelques mises en garde à prendre en compte. Cela peut renvoyer
null
ou""
ou même"???????"
, et cela peut renvoyer un numéro de téléphone périmé qui n'est plus valide. Si vous voulez quelque chose qui identifie de manière unique le périphérique, vous devez utiliser à lagetDeviceId()
place.la source
null
. Cela étant dit, je ne suis pas au courant d'une meilleure réponse.Il n'y a pas de solution garantie à ce problème car le numéro de téléphone n'est pas physiquement stocké sur toutes les cartes SIM, ni diffusé du réseau vers le téléphone. Cela est particulièrement vrai dans certains pays qui nécessitent une vérification d'adresse physique, l'attribution des numéros ne se produisant qu'après. L'attribution des numéros de téléphone se produit sur le réseau - et peut être modifiée sans changer la carte SIM ou l'appareil (par exemple, c'est ainsi que le portage est pris en charge).
Je sais que c'est douloureux, mais la meilleure solution est probablement de demander à l'utilisateur d'entrer son numéro de téléphone une fois et de le stocker.
la source
Mise à jour: cette réponse n'est plus disponible car Whatsapp a cessé d'exposer le numéro de téléphone comme nom de compte, veuillez ignorer cette réponse.
Il existe en fait une solution alternative que vous voudrez peut-être envisager, si vous ne pouvez pas l'obtenir via le service de téléphonie.
À partir d'aujourd'hui, vous pouvez compter sur une autre grande application Whatsapp, en utilisant
AccountManager
. Des millions d'appareils ont cette application installée et si vous ne pouvez pas obtenir le numéro de téléphone viaTelephonyManager
, vous pouvez essayer.Autorisation:
Code:
Vérifier le
actype
compte WhatsAppBien sûr, vous ne pourrez pas l'obtenir si l'utilisateur n'a pas installé WhatsApp, mais cela vaut la peine d'essayer quand même. Et n'oubliez pas que vous devez toujours demander confirmation à l'utilisateur.
la source
Comme indiqué dans ma réponse précédente
Utilisez le code ci-dessous:
Dans AndroidManifest.xml, accordez l'autorisation suivante:
Mais rappelez-vous, ce code ne fonctionne pas toujours, car le numéro de téléphone portable dépend de la carte SIM et de l'opérateur réseau / opérateur de téléphone portable.
Essayez également de vérifier Téléphone -> Paramètres -> À propos -> Identité du téléphone.Si vous pouvez y afficher le numéro, la probabilité d'obtenir le numéro de téléphone à partir du code ci-dessus est plus élevée. Si vous n'êtes pas en mesure d'afficher le numéro de téléphone dans les paramètres, vous ne pourrez pas obtenir via ce code!
Solution de contournement suggérée:
Effectuez les 4 étapes ci-dessus en tant qu'activité unique lors du premier lancement de l'application. Plus tard, chaque fois qu'un numéro de téléphone est requis, utilisez la valeur disponible dans les préférences partagées.
la source
C'est ainsi que vous demandez un numéro de téléphone via l'API Play Services sans l'autorisation et les hacks. Source et exemple complet .
Dans votre build.gradle (version 10.2.x et supérieure requise):
Dans votre activité (le code est simplifié):
Cela va générer une boîte de dialogue comme celle-ci:
la source
Code extrait de http://www.androidsnippets.com/get-my-phone-number
la source
Il existe une nouvelle API Android qui permet à l'utilisateur de sélectionner son numéro de téléphone sans avoir besoin d'une autorisation. Jetez un œil à: https://android-developers.googleblog.com/2017/10/effective-phone-number-verification.html
la source
Je veux juste ajouter un peu ici aux explications ci-dessus dans les réponses ci-dessus. Ce qui fera également gagner du temps aux autres.
Dans mon cas, cette méthode n'a renvoyé aucun numéro de mobile, une chaîne vide a été renvoyée. C'est à cause du cas que j'avais porté mon numéro sur la nouvelle carte SIM. Donc, si je vais dans Paramètres> À propos du téléphone> État> Mon numéro de téléphone, cela m'indique "Inconnu".
la source
Parfois, sous le code retourne
null
ou une chaîne vide.Avec l'autorisation ci-dessous
Il existe un autre moyen d'obtenir votre numéro de téléphone, je n'ai pas testé cela sur plusieurs appareils, mais le code ci-dessus ne fonctionne pas à chaque fois.
Essayez le code ci-dessous:
Vous devrez ajouter ces deux autorisations.
J'espère que cela vous aide, merci!
la source
String s1
sera le numéro de téléphone.Ceci est une réponse plus simplifiée:
la source
Tout d'abord, obtenir le numéro de mobile des utilisateurs est contraire à la politique éthique, auparavant c'était possible, mais maintenant, selon mes recherches, aucune solution solide n'est disponible pour cela.En utilisant un code, il est possible d'obtenir un numéro de mobile, mais aucune garantie ne peut fonctionner. seulement dans quelques appareils. Après beaucoup de recherches, je n'ai trouvé que trois solutions, mais elles ne fonctionnent pas sur tous les appareils.
Il y a la raison suivante pour laquelle nous n'obtenons pas.
1.L'appareil Android et la nouvelle carte SIM ne stockent pas le numéro de téléphone mobile si le numéro de téléphone mobile n'est pas disponible dans l'appareil et dans la carte SIM alors comment il est possible d'obtenir le numéro, si une ancienne carte SIM ayant un numéro de téléphone portable utilise alors le gestionnaire de téléphonie, nous pouvons obtenir le numéro autre sage, il retournera le "null" ou "" ou "??????"
la source
TelephonyManager
n'est pas la bonne solution, car dans certains cas, le numéro n'est pas stocké dans la carte SIM. Je vous suggère d'utiliser la préférence partagée pour stocker le numéro de téléphone de l'utilisateur pour la première fois que l'application est ouverte et le numéro sera utilisé chaque fois que vous en aurez besoin.la source
Voici une combinaison des solutions que j'ai trouvées (exemple de projet ici , si vous souhaitez également vérifier le remplissage automatique):
manifeste
build.gradle
MainActivity.kt
la source
Une petite contribution. Dans mon cas, le code a lancé une exception d'erreur. J'ai dû mettre une annotation pour que le code soit exécuté et résoudre ce problème. Ici, je laisse ce code.
la source
Bien qu'il soit possible d'avoir plusieurs comptes de messagerie vocale, lorsque vous appelez à partir de votre propre numéro, les opérateurs vous dirigent vers la messagerie vocale. Alors,
TelephonyManager.getVoiceMailNumber()
ouTelephonyManager.getCompleteVoiceMailNumber()
, selon la saveur dont vous avez besoin.J'espère que cela t'aides.
la source
Ajoutez cette dépendance:
implementation 'com.google.android.gms:play-services-auth:18.0.0'
Pour récupérer la liste des numéros de téléphone, utilisez ceci:
Après avoir tapé sur la boîte de dialogue des services de lecture:
la source
tout en travaillant sur une application de sécurité qui devait obtenir le numéro de téléphone de la personne que mon téléphone pourrait mettre entre leurs mains, je devais le faire; 1. recevez le démarrage terminé, puis essayez d'obtenir Line1_Number de telephonyManager qui renvoie un résultat de chaîne. 2. comparer le résultat de la chaîne avec mon propre numéro de téléphone et s'ils ne correspondent pas ou si la chaîne renvoie null, 3. envoyer secrètement un SMS contenant le résultat de la chaîne plus un signe spécial à mon numéro de bureau. 4. Si l'envoi de message échoue, démarrez un service et continuez d'essayer après chaque heure jusqu'à ce que l'intention d'envoi du SMS envoyé soit réussie. Avec ces étapes, j'ai pu obtenir le numéro de la personne utilisant mon téléphone perdu. peu importe que la personne soit inculpée.
la source