web-dev-qa-db-fra.com

TelephonyManager.getLine1Number () en échec?

Je veux obtenir le numéro de téléphone de l'appareil Android. J'utilise ce code:

TelephonyManager tm = (TelephonyManager)this.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE); 
String phoneNumber=  tm.getLine1Number();

Sur mon téléphone (HTC Wildfire), je ne peux pas obtenir de numéro de téléphone. Tout ce que je reçois est une chaîne vide. Si je lance le code sur emulatur, le numéro de téléphone est normalement indiqué.

Si je vais dans Paramètres => À propos du téléphone => Identité du téléphone-> Numéro de téléphone, le numéro de téléphone est "Inconnu". 

Où est le problème? Quelque chose ne va pas avec ma carte SIM?

30
knagode

Nous avons eu le même problème dans notre projet. La conclusion était que cela dépend de la carte SIM.

Ce qui nous est arrivé:

  • Galaxy S avec carte SIM AT & T: peut lire le numéro de téléphone, Paramètres affiche le numéro
  • Même Galaxy avec une carte SIM européenne: impossible de lire le numéro et "inconnu" dans les paramètres (le téléphone portable fonctionnait parfaitement, mais ne pouvait pas lire le numéro)

Cela a également été rapporté dans d'autres forums.

Finalement, nous avons décidé de demander à l'utilisateur le numéro de téléphone. Un peu plus impliqué, en fait: if( "SIM card present" && "cannot read the cell number") "ask user"; . Sinon, nous continuerons à boguer l'utilisateur qui ne possède pas de carte SIM.

35
Christian Garbin

Au lieu du numéro de téléphone, utilisez le numéro de série de la carte SIM, qui existe toujours et constitue toujours une valeur valide. 

 telephonyManager.getSimSerialNumber();

Le numéro de série de la carte SIM est unique au moins chez l'opérateur. Donc combiné avec 

 telephonyManager.getNetworkOperator();

vous aurez un identifiant unique pour un abonné dans un pays.

Ceci combiné avec 

 telephonyManager.getNetworkCountryIso();

vous aurez un identifiant global unique pour un abonné.

J'espère que cela aidera.

À votre santé.

11
Nar Gar

La carte SIM enregistre le numéro de téléphone et vous pouvez l’éditer. Je ne peux pas dire pour Android, mais sur WM, vous pouvez facilement modifier votre numéro de téléphone, qui est stocké sur la carte SIM . Bien sûr, cela ne signifie pas que vous pouvez modifier votre numéro de téléphone à la volée. En fait, vous êtes libre d’écrire le nombre que vous voulez, et les programmes vont croire que c’est votre vrai numéro :)

5
trashkalmar

Lorsque j'ai déplacé une carte SIM dans un nouveau téléphone, j'ai parfois constaté que le numéro de téléphone n'apparaissait pas dans Paramètres -> À propos du téléphone -> État -> Mon numéro de téléphone.

Mes points de données:

  • AT & T Atrix y insère une toute nouvelle carte SIM: «Voice MSISDN Line1 null».
  • Le T-Mobile G1 qui introduit une nouvelle carte SIM dans celle-ci affiche correctement le numéro de téléphone.
  • T-Mobile G2 déplaçant la carte SIM de mon ancien G1 dans est dit "Inconnu".
2
Dan J

J'utilise une carte SIM qui ne permet que le transfert de données. Il ne permet pas d'appels téléphoniques.

Lorsque j'essaie d'obtenir le numéro de téléphone avec getLine1Number(), la chaîne est vide.

0
trante

Numéro de téléphone disponible si la carte SIM l'autorise à obtenir son . Dans notre société, j'ai trouvé un seul SIM, qui est autorisé à obtenir le numéro. Je teste cette carte SIM sur tous les appareils Android. Tout va bien. getLine1Number () est ok. Je cherche maintenant un numéro de téléphone pour une autre carte SIM. Envoyez des sms à notre serveur sms ou à un autre appareil Android (avec traitement de SMS)

0
RN3KK Nick