2012-12-27 22 views
29

Desidero conoscere il numero di cellulare dell'utente in Android. Ho usato questo codice ma non ottengo il numero.Come ottenere il numero corrente della carta SIM in Android?

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
     String n = tm.getLine1Number(); 

permesso:

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

E 'obbligatorio per salvare il numero in Android cellulare settings --> about phone --> status --> myphone number

Qualche idea su questo?

+0

Ti hanno permesso READ_PHONE_STATE? – 323go

+0

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

+0

Non puoi farlo. –

risposta

-10

È possibile utilizzare il TelephonyManager per fare questo:

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

Hai usato

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

Si prega di leggere la descrizione della domanda. Non rispondi semplicemente leggendo il titolo. –

+1

Questo non funziona nel mio caso almeno. Sta dando una stringa vuota. Ho provato su Nexus 4 con Android 4.4 e Galaxy Grand con 4.2.2 –

0

richiede l'autorizzazione READ_PHONE_STATE.

TelephonyManager telMgr = 
    (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); 

    String deviceID = telMgr.getDeviceId(); 
    String simSerialNumber = telMgr.getSimSerialNumber(); 
String simLineNumber = telMgr.getLine1Number(); 
23

Penso che il numero seriale sim e il numero sim siano unici. Puoi provare questo per ottenere il numero seriale della sim e ottenere il numero sim e non dimenticare di aggiungere permessi nel file manifest.

TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
String getSimSerialNumber = telemamanger.getSimSerialNumber(); 
String getSimNumber = telemamanger.getLine1Number(); 

E aggiungere l'autorizzazione di seguito nel file Androidmanifest.xml.

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

Fammi sapere se c'è qualche problema.

+0

ho scritto sopra il codice ma il mio numero sim è vuoto. quindi cosa voglio fare? –

+0

Supponiamo che io cambi la sim card con lo stesso numero di telefono se ottengo lo stesso numero seriale della mia sim? – NandaKumar

+0

ottiene il valore nullo in tutti i dispositivi –

3

Hai tutto a posto, ma il problema è con la funzione getLine1Number().

getLine1Number() - questo metodo restituisce la stringa numero di telefono per la linea 1, cioè il MSISDN per un telefono GSM. Restituisce null se non è disponibile.

questo metodo funziona solo per pochi telefoni cellulari ma non tutti i telefoni.

Quindi, se è necessario eseguire operazioni in base alla sim (diversa dalla chiamata), è necessario utilizzare getSimSerialNumber(). È sempre unico, valido e sempre esiste.

6

Aggiornamento: questa risposta non è più disponibile poiché Whatsapp ha smesso di esporre il numero di telefono come nome account, ignorare gentilmente questa risposta.

============================================= ======================

Sono passati quasi 6 mesi e credo che dovrei aggiornalo con una soluzione alternativa che potresti voler prendere in considerazione.

A partire da oggi, è possibile fare affidamento su un'altra grande applicazione Whatsapp, utilizzando AccountManager. Milioni di dispositivi hanno questa applicazione installata e se non è possibile ottenere il numero di telefono tramite TelephonyManager, si può dare questo colpo.

permesso:

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

Codice:

AccountManager am = AccountManager.get(this); 
Account[] accounts = am.getAccounts(); 

ArrayList<String> googleAccounts = new ArrayList<String>(); 
for (Account ac : accounts) { 
    String acname = ac.name; 
    String actype = ac.type; 
    // Take your time to look at all available accounts 
    System.out.println("Accounts : " + acname + ", " + actype); 
} 

Controllare actype per conto WhatsApp

if(actype.equals("com.whatsapp")){ 
    String phoneNumber = ac.name; 
} 

Naturalmente non si può ottenere che se l'utente non ha installato WhatsApp, ma la sua vale la pena provare comunque. E ricorda che devi sempre chiedere conferma all'utente.

+0

restituisce il nome dell'app non il numero – Ravi

+0

Viber (non WhatsApp) aggiungi il numero di telefono al campo del nome! – xnagyg

7

Ottenere il numero di telefono, IMEI, e la SIM Card ID

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

Per la scheda SIM, utilizzare il getSimSerialNumber() Numero

//---get the SIM card ID--- 
    String simID = tm.getSimSerialNumber(); 
    if (simID != null) 
     Toast.makeText(this, "SIM card ID: " + simID, 
     Toast.LENGTH_LONG).show(); 

telefono del telefono, utilizzare il getLine1Number() (Non qualche dispositivo restituisce il numero di telefono)

//---get the phone number--- 
    String telNumber = tm.getLine1Number(); 
    if (telNumber != null)   
     Toast.makeText(this, "Phone number: " + telNumber, 
     Toast.LENGTH_LONG).show(); 

numero IMEI del telefono cellulare, utilizzare il GetDeviceID()

//---get the IMEI number--- 
    String IMEI = tm.getDeviceId(); 
    if (IMEI != null)   
     Toast.makeText(this, "IMEI number: " + IMEI, 
     Toast.LENGTH_LONG).show(); 

autorizzazioni necessarie

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