500 Stimmen

Programmatisch die Telefonnummer des Android-Handys ermitteln

Wie kann ich die Telefonnummer des Geräts, auf dem meine Android-App läuft, programmatisch abrufen?

17voto

Wirling Punkte 4055

Es gibt eine neue Android-Api, die es dem Benutzer ermöglicht, seine Telefonnummer auszuwählen, ohne dass er eine Genehmigung benötigt. Werfen Sie einen Blick darauf: https://Android-developers.googleblog.com/2017/10/effective-phone-number-verification.html

// Construct a request for phone numbers and show the picker
private void requestHint() {
    HintRequest hintRequest = new HintRequest.Builder()
       .setPhoneNumberIdentifierSupported(true)
       .build();

    PendingIntent intent = Auth.CredentialsApi.getHintPickerIntent(
        apiClient, hintRequest);
    startIntentSenderForResult(intent.getIntentSender(),
        RESOLVE_HINT, null, 0, 0, 0);
}

14voto

Emil Hajric Punkte 700
private String getMyPhoneNumber(){
    TelephonyManager mTelephonyMgr;
    mTelephonyMgr = (TelephonyManager)
        getSystemService(Context.TELEPHONY_SERVICE); 
    return mTelephonyMgr.getLine1Number();
}

private String getMy10DigitPhoneNumber(){
    String s = getMyPhoneNumber();
    return s != null && s.length() > 2 ? s.substring(2) : null;
}

Code entnommen aus http://www.androidsnippets.com/get-my-phone-number

9voto

activesince93 Punkte 1741

Manchmal gibt der folgende Code Folgendes zurück null oder leere Zeichenfolge.

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

Mit nachstehender Genehmigung

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

Es gibt noch eine andere Möglichkeit, Ihre Telefonnummer zu erhalten. Ich habe dies nicht auf mehreren Geräten getestet, aber der obige Code funktioniert nicht jedes Mal.

Versuchen Sie den folgenden Code:

String main_data[] = {"data1", "is_primary", "data3", "data2", "data1", "is_primary", "photo_uri", "mimetype"};
Object object = getContentResolver().query(Uri.withAppendedPath(android.provider.ContactsContract.Profile.CONTENT_URI, "data"),
        main_data, "mimetype=?",
        new String[]{"vnd.android.cursor.item/phone_v2"},
        "is_primary DESC");
if (object != null) {
    do {
        if (!((Cursor) (object)).moveToNext())
            break;
        // This is the phoneNumber
        String s1 = ((Cursor) (object)).getString(4);
    } while (true);
    ((Cursor) (object)).close();
}

Sie müssen diese beiden Berechtigungen hinzufügen.

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

Ich hoffe, das hilft, Danke!

9voto

user_CC Punkte 4586

Ich möchte hier nur ein wenig zu den obigen Erklärungen in den obigen Antworten hinzufügen. Das wird auch anderen Zeit sparen.

In meinem Fall hat diese Methode keine Handynummer zurückgegeben, sondern eine leere Zeichenfolge. Das lag daran, dass ich meine Nummer auf die neue SIM-Karte portiert hatte. Wenn ich also in die Einstellungen>Über das Telefon>Status>Meine Telefonnummer gehe, wird mir "Unbekannt" angezeigt.

5voto

Zunächst einmal erhalten Benutzer Handynummer ist gegen die ethische Politik, früher war es möglich, aber jetzt als pro meine Forschung gibt es keine solide Lösung für diese, durch die Verwendung von einigen Code ist es möglich, Handynummer zu erhalten, aber keine Garantie kann es nur in wenigen Gerät funktionieren. Nach viel Forschung fand ich nur drei Lösung, aber sie sind nicht in allen Geräten arbeiten.

Es gibt den folgenden Grund, warum wir nicht bekommen.

1. Android-Gerät und neue Sim-Karte nicht Speichern von Handy-Nummer, wenn Handy-Nummer ist nicht verfügbar in Gerät und in sim dann, wie es möglich ist, um die Nummer, wenn eine alte Sim-Karte mit Handy-Nummer dann mit Telefonie-Manager können wir die Nummer sonst wird es die "null" oder "" oder "??????"

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

 TelephonyManager tel= (TelephonyManager)this.getSystemService(Context.
            TELEPHONY_SERVICE);
    String PhoneNumber =  tel.getLine1Number();

Hinweis: Ich habe diese Lösung auf folgenden Geräten getestet: Moto x, Samsung Tab 4, Samsung S4, Nexus 5 und Redmi 2 prime, aber es funktioniert nicht jedes Mal. Jedes Mal wird eine leere Zeichenfolge zurückgegeben, so dass die Schlussfolgerung lautet, dass es nutzlos ist.

  1. Diese Methode funktioniert nur in Redmi 2 prime, aber dafür müssen Sie Folgendes hinzufügen Kontaktleseerlaubnis im Manifest hinzufügen.

Hinweis:- Dies ist auch nicht die garantierte und effiziente Lösung, ich habe diese Lösung in vielen Gerät getestet, aber es funktionierte nur in Redmi 2 prime die Dual-Sim-Gerät ist es gibt mir zwei Handy-Nummer erste ist korrekt, aber die zweite gehört nicht zu meiner zweiten Sim, sondern zu meiner alten Sim-Karte, die ich nicht benutze.

 String main_data[] = {"data1", "is_primary", "data3", "data2", "data1",
            "is_primary", "photo_uri", "mimetype"};
    Object object = getContentResolver().
            query(Uri.withAppendedPath(android.provider.ContactsContract.Profile.CONTENT_URI, "data"),
            main_data, "mimetype=?",
            new String[]{"vnd.android.cursor.item/phone_v2"},
            "is_primary DESC");
    String s1="";
    if (object != null) {
        do {
            if (!((Cursor) (object)).moveToNext())
                break;
            // This is the phoneNumber
             s1 =s1+"---"+ ((Cursor) (object)).getString(4);
        } while (true);
        ((Cursor) (object)).close();
    }
  1. Bei meiner Recherche habe ich festgestellt, dass es früher möglich war, die Handynummer über das WhatsApp-Konto zu erhalten, aber jetzt speichert die neue Whatsapp-Version die Handynummer des Benutzers nicht mehr.

Schlussfolgerung :- Android hat keine garantierte Lösung, um die Mobilnummer des Benutzers programmatisch zu erhalten.

Anregung 1: Wenn Sie die Handynummer des Benutzers verifizieren wollen, bitten Sie den Benutzer, seine Nummer anzugeben, mit otp können Sie das überprüfen.

  1. Wenn Sie das Gerät des Benutzers identifizieren möchten, können Sie die IMEI-Nummer des Geräts leicht ermitteln.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X