2010-02-05 7 views
34

Je dois faire une application qui montre le numéro de contact de la carte SIM qui est utilisée dans la cellule. Pour cela, j'ai besoin d'utiliser la classe TelephonyManager. Puis-je obtenir des détails sur son utilisation?Comment obtenir le numéro de portable de la carte SIM actuelle dans le vrai périphérique?

+2

Vous devriez vraiment essayer d'expliquer votre question beaucoup mieux. Votre question est difficile à comprendre et ne contient aucun détail qui permettrait à quiconque de vous aider. –

+0

Essayez-vous d'obtenir le numéro de téléphone mobile dans votre application Android? – slhsen

+2

merci beaucoup – Narasimha

Répondre

64

Vous pouvez utiliser the TelephonyManager pour ce faire:

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = tm.getLine1Number(); 

Le documentation for getLine1Number() dit cette méthode retourne null si le nombre est « indisponible », mais il ne dit pas quand le nombre pourrait être indisponible.

Vous devez donner à votre demande permission to make this query en ajoutant ce qui suit à votre Manifest: (. Vous ne devriez pas utiliser TelephonyManager.getDefault() pour obtenir le TelephonyManager comme that is a private undocumented API call and may change in future)

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

+1

merci beaucoup – Narasimha

+1

Son donnant une chaîne vide en retour. Alors, comment le faire savoir? – Debarati

+1

dans l'émulateur son donnant la valeur correcte. Mais dans le vrai appareil il renvoie la valeur null.why? Svp pouvez-vous donner n'importe quelle solution pour ceci – user1213202

-2

Comme beaucoup ont dit :

String phoneNumber = TelephonyManager.getDefault().getLine1Number(); 

La disponibilité dépend strictement de l'opérateur et de la façon dont le numéro est e codé sur la carte SIM. Si elle est codée en dur par l'entreprise qui fabrique les cartes SIM ou par le transporteur mobile lui-même. Cela renvoie la même chose que dans Paramètres-> à propos du téléphone.

+8

Il n'y a pas de méthode 'getDefault()' dans la classe 'TelephonyManager'. –

+3

@Matt Il y avait quand Android était encore en version bêta, mais vous avez raison ... lorsque cette question a été posée (bien après Android 1.0), il avait été retiré de l'API. –

0

Parfois, vous pouvez récupérer le numéro de téléphone avec une demande USSD à votre opérateur. Par exemple, je peux obtenir mon numéro de téléphone en composant le * 116 # Cela peut probablement être fait dans une application, je suppose, si la réponse USSD pourrait en quelque sorte être interceptée. Bien sûr, ce n'est pas une méthode que je recommanderais d'utiliser dans une application qui doit être distribuée, le code peut même différer entre les opérateurs.

+0

Cela ne fonctionne pas pour tous les opérateurs dans tous les pays. –

+0

C'est correct, et c'est aussi ce que j'ai écrit dans mon commentaire "parfois vous pouvez récupérer le numéro de téléphone ...". Dans certains cas, ils peuvent utiliser un code USSD différent et parfois, ils peuvent ne pas avoir la fonctionnalité du tout. – ziggestardust

6

Salut En fait c'est ma même question mais je n'ai rien obtenu.Maintenant j'ai reçu le numéro de portable et son email-ID de l'appareil réel Android (Android Mobile) .Maintenant, 90% des gens utilisent l'application App Android Mobile.And maintenant je reçois Mobile non et email-ID Grâce à cette API Qu'est-ce que l'application.Sa très simple à utiliser voir ce code ci-dessous.

  AccountManager am = AccountManager.get(this); 
      Account[] accounts = am.getAccounts(); 
     for (Account ac : accounts) 
     { 
     acname = ac.name; 

     if (acname.startsWith("91")) { 
      mobile_no = acname; 
     }else if(acname.endsWith("@gmail.com")||acname.endsWith("@yahoo.com")||acname.endsWith("@hotmail.com")){ 
      email = acname; 
     } 

     // Take your time to look at all available accounts 
     Log.i("Accounts : ", "Accounts : " + acname); 
    } 

et importer cette API

import android.accounts.Account; 
    import android.accounts.AccountManager; 
+2

pourquoi comparez-vous 'acname' avec' 91'. Sera-t-il seulement en Inde – sarabu

+0

@Amarnath Baitha Dans WhatsApp U peut utiliser le numéro de sim un sorcier non inséré sur cet appareil où WhatsApp est installé ?? c'est le moment quelle est la bonne solution? Ce n'est jamais obligatoire dans What'SApp que la carte SIM est nécessaire !! –

3

Je dois faire une application qui montre le contact ne de la carte SIM qui est utilisé dans la cellule. Pour cela, j'ai besoin d'utiliser la classe Telephony Manager. Puis-je obtenir des détails sur son utilisation?

Oui, Vous devez utiliser le Gestionnaire de téléphonie Si vous n'avez pas trouvé le numéro de téléphone. de l'utilisateur Vous pouvez obtenir le numéro de série Sim de la carte SIM et le numéro Imei du périphérique Android en utilisant la même classe de gestionnaire de téléphonie ...

Ajouter la permission:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

Importation:

import android.telephony.TelephonyManager; 

Utilisez le code ci-dessous:

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 

     // get IMEI 
     imei = tm.getDeviceId(); 

     // get SimSerialNumber 
     simSerialNumber = tm.getSimSerialNumber(); 
1

Eh bien, tout pourrait être hacks temporaires, mais il n'y a aucun moyen de numéro de portable d'un utilisateur. C'est contre la politique éthique. Par exemple, l'une des réponses ci-dessus suggère d'obtenir tous les comptes et d'en extraire à partir de là. Et ça ne marche plus! Tous ces éléments ne sont que des hacks.

Le seul moyen d'obtenir le numéro de portable de l'utilisateur passe par l'opérateur. Si vous avez un lien avec les opérateurs mobiles comme Aitel, Vodafone, etc., vous pouvez obtenir le numéro de téléphone mobile de l'utilisateur dans l'en-tête de la demande à partir du combiné mobile lorsqu'il est connecté via Internet mobile.

Vous ne savez pas si un fabricant peut avoir des autorisations spécifiques pour vous aider - pas exploré cette zone, mais rien d'au moins documenté.