2014-05-15 6 views
15

Ich versuche Telefon zu bekommen nicht mit folgenden Methode:Wie Telefonnummer eines Gerät erhalten programmatisch

private String getMyPhoneNumber() { 
    TelephonyManager mTelephonyMgr; 

    mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
    //String imsi = mTelephonyMgr.getSubscriberId(); 
    String phnNo = mTelephonyMgr.getLine1Number(); 
    if (phnNo == null) { 
     phnNo = getNoFromWatsApp(); 
    } 
    return phnNo; 
} 

private String getNoFromWatsApp(){ 
    AccountManager am = AccountManager.get(this); 
    Account[] accounts = am.getAccounts(); 
    String phoneNumber = ""; 

    for (Account ac : accounts) { 
     String acname = ac.name; 
     String actype = ac.type; 
     // Take your time to look at all available accounts 
     if(actype.equals("com.whatsapp")) { 
      phoneNumber = ac.name; 
     } 
    } 
    return phoneNumber; 
} 

Aber jedes Mal, wenn ich eine leere Telefonnummer erhalten. Ich habe sogar versucht, eine Telefonnummer von WhatsApp zu bekommen, aber es gibt "WhatsApp" statt Telefonnummer zurück. Gibt es eine andere Möglichkeit, dieses Problem zu lösen?

+0

überprüfen Sie das http://StackOverflow.com/Questions/17296252/Get-Phonenumber-programmatic-android – elmorabea

+0

Lesen Sie http://StackOverflow.com/Questions/22639640/How-Can--Get-My-WhatsApp -number –

Antwort

24

Verwenden Sie den folgenden Code:

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); 
String mPhoneNumber = tMgr.getLine1Number(); 

In AndroidManifest.xml, geben die folgende Berechtigung:

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

Aber denken Sie daran, sich dieser Code nicht immer, da Handy-Nummer ist abhängig von der SIM-Karte und der Netzbetreiber/Mobilfunkbetreiber.

Versuchen Sie auch, in Phone Überprüfung -> Einstellungen -> Über uns -> Telefon Identität, wenn Sie in der Lage sind, die Anzahl zu sehen, die Wahrscheinlichkeit, die Telefonnummer immer von oben Code höher ist . Wenn Sie die Telefonnummer in den Einstellungen nicht sehen können, können Sie nicht über diesen Code gelangen!

+0

Ich denke, dass dieser Code Ihnen Nummer geben wird, wenn Ihre Nummer in Ihrer SIM-Karte gespeichert werden muss, sonst würde es nicht gefunden werden, wie ich denke. Was denkst du, Nisha? –

+0

Die Nummer muss vom Netzbetreiber automatisch gespeichert werden. Als wir versucht haben, die Telefonnummer manuell in den Einstellungen zu speichern (sehr wenige Telefone erlauben das aber !!), konnten wir die Telefonnummer nicht abrufen! :( –

+0

Aus unserer Beobachtung bei der Arbeit in einem Projekt, das sich auf das Abrufen von Telefonnummer bezieht, stellten wir fest, dass diese Nummer in älteren SIM-Karten (vor der Portabilität von Mobilnummern) in den meisten Fällen verfügbar war nicht auffindbar. –

Verwandte Themen