wake-up-neo.com

Wie erhalte ich die aktuelle SIM-Kartennummer in Android?

Ich möchte die Handynummer des Benutzers in Android kennen. Ich habe diesen Code benutzt, aber ich bekomme keine Nummer.

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

Genehmigung:

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

Ist es obligatorisch, eine Nummer in Android Handy settings --> about phone --> status --> myphone number Zu speichern?

Irgendeine Idee dazu?

38
User

Ich denke, SIM-Seriennummer und SIM-Nummer ist einzigartig. Sie können dies versuchen, um die Seriennummer der SIM-Karte und die SIM-Karte abzurufen. Vergessen Sie nicht, die Berechtigung in der Manifestdatei hinzuzufügen.

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

Und füge unten die Erlaubnis in dein Androidmanifest.xml Datei.

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

Lassen Sie mich wissen, wenn es ein Problem gibt.

27
Dipak Keshariya

Abrufen von Telefonnummer, IMEI und SIM-Karten-ID

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

Verwenden Sie für die SIM-Karte die Funktion getSimSerialNumber ().

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

Telefonnummer Ihres Telefons, verwenden Sie die getLine1Number () (einige Geräte geben die Telefonnummer nicht zurück)

    //---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"/>
7
Anil gangwar

pdate: Diese Antwort ist nicht mehr verfügbar, da Whatsapp die Angabe der Telefonnummer als Kontoname eingestellt hat. Bitte ignorieren Sie diese Antwort.

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

Es ist fast 6 Monate her und ich glaube, ich sollte dies mit einer alternativen Lösung aktualisieren, die Sie in Betracht ziehen könnten.

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

Genehmigung:

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

Überprüfen Sie den Actype für das WhatsApp-Konto

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

Natürlich bekommen Sie es möglicherweise nicht, wenn der Benutzer Whatsapp nicht installiert hat, aber es lohnt sich trotzdem, es zu versuchen. Und denken Sie daran, dass Sie den Benutzer immer um Bestätigung bitten sollten.

6
Chor Wai Chun

Sie haben alles richtig gemacht, aber das Problem liegt in der Funktion getLine1Number().

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

diese Methode funktioniert nur bei wenigen Handys, aber nicht bei allen Handys.

Wenn Sie also Operationen entsprechend der Sim ausführen müssen (außer Aufrufen), sollten Sie getSimSerialNumber() verwenden. Es ist immer eindeutig, gültig und es ist immer vorhanden.

2