2012-12-27 8 views
29

Ich möchte die Handynummer des Benutzers in Android wissen. Ich habe diesen Code benutzt, aber ich bekomme keine Nummer.Wie bekomme ich die aktuelle SIM-Kartennummer in Android?

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

Berechtigung:

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

Ist es zwingend auf diese Handynummer in android settings --> about phone --> status --> myphone number

Jede Idee zu retten?

+0

Haben Sie READ_PHONE_STATE Erlaubnis haben? – 323go

+0

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

+0

Das geht nicht. –

Antwort

-10

können Sie die TelephonyManager, dies zu tun:

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

Haben Sie

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

Bitte lesen Sie die Frage Beschreibung. Antworte nicht nur, indem du den Titel liest. –

+1

Das funktioniert in meinem Fall zumindest nicht. Es gibt leere Zeichenfolge. Ich testete auf Nexus 4 mit Android 4.4 und Galaxy Grand mit 4.2.2 –

0

Erfordert die READ_PHONE_STATE Erlaubnis.

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

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

Ich denke, Sim-Seriennummer und Sim-Nummer ist einzigartig. Sie können dies für get sim Seriennummer versuchen und SIM-Nummer erhalten und vergessen Sie nicht, die Berechtigung in Manifest-Datei hinzuzufügen.

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

Und fügen Sie unten Erlaubnis in Ihre Androidmanifest.xml Datei hinzu.

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

Lassen Sie mich wissen, wenn es ein Problem gibt.

+0

Ich schreibe oben Code, aber meine Sim-Nummer ist leer. also was ich machen möchte? –

+0

Angenommen, ich ändere die SIM-Karte mit derselben Telefonnummer, ob ich die gleiche SIM-Seriennummer bekomme? – NandaKumar

+0

NULL-Wert in allen Gerät erhalten –

3

Sie haben alles richtig, aber das Problem ist mit getLine1Number() Funktion.

getLine1Number() - Diese Methode gibt die Telefonnummer-String für Zeile 1, d.h der MSISDN für ein GSM-Telefon. Gibt null zurück, wenn es nicht verfügbar ist.

Diese Methode funktioniert nur für wenige Handys, aber nicht für alle Telefone.

Also, wenn Sie Operationen entsprechend der Sim (außer Anruf) durchführen müssen, dann sollten Sie getSimSerialNumber() verwenden. Es ist immer einzigartig, gültig und es gibt immer existiert.

6

Update: Diese Antwort ist nicht mehr verfügbar, da WhatsApp die Telefonnummer als Kontoname nicht mehr angezeigt hat, bitte ignorieren Sie diese Antwort.

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

Es war fast 6 Monate und ich glaube, ich sollte Aktualisieren Sie dies mit einer alternativen Lösung, die Sie möglicherweise in Erwägung ziehen.

Ab heute können Sie sich auf eine andere große Anwendung Whatsapp mit AccountManager verlassen. Auf Millionen von Geräten ist diese Anwendung installiert. Wenn Sie die Telefonnummer nicht über TelephonyManager abrufen können, können Sie dies tun.

Berechtigung:

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

Code:

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

prüfen actype für whatsapp Konto

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

Natürlich kann man nicht bekommen kann, wenn der Benutzer WhatsApp nicht installiert, aber seine es lohnt sich, es trotzdem zu versuchen. Und denken Sie daran, Sie sollten immer Benutzer um Bestätigung bitten.

+0

zurückgeben Name der App nicht die Nummer – Ravi

+0

Viber (nicht WhatsApp) füge die Telefonnummer zum Namensfeld hinzu! – xnagyg

7

Abrufen der Telefonnummer, IMEI und SIM-Karten-ID

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

Für SIM-Karte, die getSimSerialNumber verwenden()

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

Telefonnummer des Telefons, verwenden Sie die getLine1Number() (irgendeines Dont 's Gerät die Telefonnummer) zurückkehren

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

IMEI-Nummer des Telefons, verwenden Sie die GetDeviceID()

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

Berechtigungen benötigt

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