wake-up-neo.com

Wie bekomme ich die Handynummer der aktuellen SIM-Karte in ein echtes Gerät?

Ich muss eine Anwendung erstellen, die die Kontaktnummer der SIM-Karte anzeigt, die in der Zelle verwendet wird. Dafür muss ich die Klasse TelephonyManager verwenden. Kann ich Einzelheiten zu seiner Verwendung erfahren?

35
Narasimha

Sie können das TelephonyManager verwenden, um dies zu tun:

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

Die Dokumentation für getLine1Number() besagt, dass diese Methode null zurückgibt, wenn die Nummer "nicht verfügbar" ist, aber nicht angibt, wann die Nummer möglicherweise nicht verfügbar ist.

Sie müssen Ihrer Anwendung die Erlaubnis erteilen, diese Abfrage durchzuführen indem Sie Folgendes zu Ihrem Manifest hinzufügen:

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

(Sie sollten TelephonyManager.getDefault() nicht verwenden, um TelephonyManager als das ist ein privater undokumentierter API-Aufruf und kann sich in Zukunft ändern .)

64
Dave Webb

Hi Eigentlich ist das meine selbe Frage, aber ich habe nichts bekommen. Jetzt habe ich die Handynummer und seine E-Mail-ID von einem bestimmten Android real device (Android Mobile). Heute 90% der Leute Verwenden der What's App-Anwendung auf Android Mobile.Und jetzt erhalte ich Mobile-Nr. und E-Mail-ID über diese What's App-API.Ist sehr einfach zu bedienen, siehe folgenden Code.

            AccountManager am = AccountManager.get(this);
            Account[] accounts = am.getAccounts();
      for (Account ac : accounts) 
       {
        acname = ac.name;

        if (acname.startsWith("91")) {
            mobile_no = acname;
        }else if(acname.endsWith("@gmail.com")||acname.endsWith("@yahoo.com")||acname.endsWith("@hotmail.com")){
            email = acname;
        }

        // Take your time to look at all available accounts
        Log.i("Accounts : ", "Accounts : " + acname);
    }

und importieren Sie diese API

    import Android.accounts.Account;
    import Android.accounts.AccountManager;
6
Amarnath Baitha

Ich muss eine Anwendung erstellen, in der die Kontaktnummer der SIM-Karte angezeigt wird, die in der Zelle verwendet wird. Dafür muss ich die Klasse Telephony Manager verwenden. Kann ich Einzelheiten zu seiner Verwendung erfahren?

Ja, Sie müssen den Telefonie-Manager verwenden. Falls Sie die Kontakt-Nr. Nicht gefunden haben. des Benutzers; Sie können die Sim-Seriennummer der Sim-Karte und die Imei-Nummer des Android Device mit derselben Telefonie-Manager-Klasse ...

Berechtigung hinzufügen:

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

Importieren:

import Android.telephony.TelephonyManager;

Verwenden Sie den folgenden Code:

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

         // get IMEI
         imei = tm.getDeviceId();

         // get SimSerialNumber
         simSerialNumber = tm.getSimSerialNumber();
3
Yasar Khan

Nun, es könnte sich alles um temporäre Hacks handeln, aber es gibt keine Möglichkeit, die Handynummer eines Benutzers abzurufen. Es ist gegen die ethische Politik.

Beispielsweise schlägt eine der obigen Antworten vor, alle Konten abzurufen und von dort zu extrahieren. Und es funktioniert nicht mehr! All dies sind nur Hacks.

Die einzige Möglichkeit, die Mobiltelefonnummer des Benutzers zu erhalten, ist der Betreiber. Wenn Sie mit Mobilfunkanbietern wie Aitel, Vodafone usw. in Verbindung stehen, können Sie die Mobiltelefonnummer des Benutzers im Anforderungskopf des Mobiltelefons abrufen, wenn Sie über das Mobilfunknetz mit dem Internet verbunden sind.

Wir sind uns nicht sicher, ob es hilfreich sein kann, Hersteller zu binden, um bestimmte Berechtigungen zu erhalten. Wir haben diesen Bereich nicht erkundet, aber zumindest nichts dokumentiert.

1
Amit

Manchmal können Sie die Telefonnummer mit einer USSD-Anfrage an Ihren Netzbetreiber abrufen. Zum Beispiel kann ich meine Telefonnummer erhalten, indem ich * 116 # wähle. Dies kann wahrscheinlich innerhalb einer App erfolgen, denke ich, wenn die USSD-Antwort könnte irgendwie abgefangen werden. Natürlich ist dies keine Methode, die ich empfehlen würde, um sie in einer App zu verwenden, die verteilt werden soll. Der Code kann sich sogar zwischen den Betreibern unterscheiden.

0
ziggestardust