Mit Telephony Manager in Android zu finden IMEI-Nummer

Ich bin sehr neu für Android Entwicklung. Ich möchte die IMEI Nummer des Telefons finden und "android.telephony.TelephonyManager" verwenden.

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.getDeviceId(); 

Jetzt sagt der Compiler. Kontext kann nicht in eine Variable aufgelöst werden. Jeder kann mir helfen? Welcher Schritt ich vermisse ich habe auch die Benutzerberechtigung in XML aufgenommen.

  • Pass Cookie zum Browser über Intent
  • Android: Erkennung Klick-Ereignis auf leeren Raum von Gridview innerhalb linearlayout
  • In Android Dialog, wie man onActivityResult für startActivityForResult einrichten?
  • Markieren Sie Text auf einem PDF
  • Ist @Singleton im Dolch 2 Thread sicher?
  • Getting Gerät os Version in Android programmgesteuert
  • Mit HttpUrlconnection in Rss Reader verursacht Android zu hängen
  • Irgendein Grund, warum ich keinen Screenshot von meiner App mit ICS eingebauter Shortcut machen kann?
  • Android SDK r20 - Windows 7 - Installiere Java JDK nicht gefunden
  • Android Studio 1.2.1.1 Layout Vorschau Probleme
  • Android.content.ActivityNotFoundException:
  • Android-Zugriff auf Remote-SQL-Datenbank
  • 6 Solutions collect form web for “Mit Telephony Manager in Android zu finden IMEI-Nummer”

    Überprüfen Sie Ihre Importe, sollten Sie importieren: android.content.Context ,

    Und dann benutze diesen Code:

     TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); // get IMEI String imei = tm.getDeviceId(); //get The Phone Number String phone = tm.getLine1Number(); 

    Oder direkt: benutze das:

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

    EDIT: * Du solltest den Kontext zu deiner neuen Klasse auf dem Konstruktor übergeben: *

     public class YourClass { private Context context; //the constructor public YourClass( Context _context){ this.context = _context; //other initialisations ..... } //here is your method to get the IMEI Number by using the Context that you passed to your class public String getIMEINumber(){ //...... place your code here } } 

    Und in deiner Aktivität, instanziere deine Klasse und verfolge den Kontext dazu so:

     YourClass instance = new YourClass(this); String IMEI = instance.getIMEINumber(); 

    Fügen Sie diesen Code hinzu:

      TelephonyManager manager=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String deviceid=manager.getDeviceId(); //Device Id is IMEI number Log.d("msg", "Device id"+deviceid); 

    Manifest

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

    Versuchen Sie unten Stück Code wird es Ihnen helfen, Gerät IMEI Nummer zu bekommen.

     public String getDeviceID(){ String devcieId; TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); if (mTelephony.getDeviceId() != null){ devcieId = mTelephony.getDeviceId(); }else{ devcieId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); } return devcieId; } 

    Geben Sie auch die Lese-Telefon-Status-Erlaubnis in Ihrem Manifest.

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

    Entfernen Sie einfach Context Schlüsselwort in Context.TELEPHONY_SERVICE und überprüfen Sie

     TelephonyManager tManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); String IMEI = tManager.getDeviceId(); 

    Für Compiler-Fehler "Kontext kann nicht auf eine Variable aufgelöst werden", stellen Sie sicher, dass Sie importiert android.content.Context Paket.
    In Eclipse, schnelle Korrekturen würde es haben, wenn Sie Mauszeiger über die Fehlerzeile in Code bewegen.
    Und stellen Sie sicher, dass Sie READ_PHONE_STATE Berechtigung Manifiest Datei hinzugefügt haben.

    [Falls jemand noch stolpert hier auf der Suche nach dieser noch bestehenden uralten Lösung]

    AFAIK, TelephonyManager.getLine1Number () ist aufgrund der verschiedenen Einschränkungen der Bediener nicht zuverlässig. Es gibt einige Java-Reflexion basierte Hacks aber variiert von Gerät zu Gerät, so dass diese Hacks Art von nutzlos [zumindest in Bezug auf unterstützte Modelle]

    Aber es gibt eine legitime rechtmäßige Logik, um die Nummer zu finden, wenn Sie es wirklich brauchen. Abfrage alle SMS per SMS-Anbieter und erhalten Sie die "To" -Nummer.

    Zusätzliche Vorteile dieses Tricks: 1. Sie können alle Zeilennummern erhalten, wenn es Multi-Sim im Gerät gibt.

    Nachteile: 1. Du brauchst SMS_READ Erlaubnis [sorry für das] 2. Du bekommst alle Sim-Nummern, die jemals im Gerät benutzt wurden. Dieses Problem kann mit einer gewissen Einschränkungslogik minimiert werden, zB Zeitrahmen (SMS erhalten oder gesendet nur heute) etc. Es wäre interessant, von anderen zu hören, wie man diesen Fall verbessern kann.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.