2014-05-15 11 views
15

Sto cercando di ottenere il telefono senza utilizzare seguente metodo:Come ottenere il numero di telefono di un dispositivo di programmazione

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; 
} 

Ma ogni volta che ricevo un numero di telefono vuota. Ho anche provato a ottenere il numero di telefono da WhatsApp ma sta restituendo "WhatsApp" al posto del numero di telefono. C'è qualche altro modo per risolvere questo problema?

+0

controllare http://stackoverflow.com/questions/17296252/get-phonenumber-programmatically-android – elmorabea

+0

Leggi http://stackoverflow.com/questions/22639640/hhow-can-i-get-my-whatsapp -numero –

risposta

24

Uso sottostante Codice:

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

In AndroidManifest.xml, dare l'autorizzazione seguente:

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

Ma ricordate, questo codice non funziona sempre, dal momento che il numero di telefono cellulare dipende dal Scheda SIM e operatore di rete/operatore telefonico.

Inoltre, cercare il check-in Telefono -> Impostazioni -> Informazioni su -> Telefono Identità, se siete in grado di visualizzare il numero di lì, la probabilità di ottenere il numero di telefono da sopra il codice è più alto . Se non si è in grado di visualizzare il numero di telefono nelle impostazioni, non sarà possibile ottenere tramite questo codice!

+0

Penso che questo codice ti darà il numero se il tuo numero deve essere salvato nella tua sim card, altrimenti non sarebbe stato trovato, secondo il mio pensiero. Cosa ne pensi nisha? –

+0

Il numero deve essere automaticamente salvato dal gestore di rete. Quando abbiamo provato a salvare manualmente il numero di telefono nelle impostazioni (Pochissimi telefoni lo consentono !!), non siamo riusciti a recuperare il numero di telefono! :( –

+0

Dalla nostra osservazione quando lavoravamo a un progetto relativo al recupero del numero di telefono, abbiamo scoperto che nelle vecchie schede SIM (precedenti alla portabilità del numero di cellulare), questo numero era disponibile nella maggior parte dei casi. non recuperabili –