Will TelephonyManger.getDeviceId () Baustein-ID für Tablets wie Galaxy Tab ...?

StackOverflow https://stackoverflow.com/questions/3802644

  •  25-09-2019
  •  | 
  •  

Frage

Ich mag die Geräte-ID erhalten, die für jedes Android-Gerät einzigartig. Ich entwickle derzeit für ein Tablet-Gerät. Möchten Sie eigene Geräte-ID erhalten und speichern Sie die entsprechenden Werte ...

Also, ich möchte wissen, ob Tablet-Geräte einen Wert zurückgeben, wenn ich TelephonyManager.getDeviceId () verwenden ... ??? Oder gibt es einen anderen Wert, der für jedes Gerät ???

ist einzigartig
War es hilfreich?

Lösung

Dies ist nicht eine doppelte Frage. Wie sich herausstellt, Googles CTS verlangen, dass getPhoneType von TelephonyManager keine sein muss und GetDeviceID von TelephonyManager null für Nicht-Telefon-Geräte sein muss.

So IMEI zu bekommen, versuchen Sie es zu verwenden:

String imei = SystemProperties.get("ro.gsm.imei")

Leider ist SystemProperties eine nicht-öffentliche Klasse in dem Android O, das heißt, es regelmäßig Anwendungen, die nicht öffentlich zugänglich ist. Versuchen Sie in diesem Beitrag der Suche nach Hilfe Zugriff auf sie: Wo liegt android.os.SystemProperties

Andere Tipps

TelephonyManger.getDeviceId () Gibt die eindeutige Geräte-ID, beispielsweise die IMEI für GSM und die MEID oder ESN für CDMA-Telefone.

final TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);            
String myAndroidDeviceId = mTelephony.getDeviceId(); 

Aber ich empfehlen die Verwendung:

Settings.Secure.ANDROID_ID , dass die Renditen der Android-ID als eindeutige 64-Bit-Hex-String.

    String   myAndroidDeviceId = Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 

Manchmal TelephonyManger.getDeviceId () den Wert null zurück, so eine eindeutige ID, um sicherzustellen, werden Sie diese Methode verwenden:

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

Da Android 8 alles hat sich geändert. Sie sollten Build.getSerial() verwenden, die Seriennummer des Gerätes zu erhalten und die Erlaubnis READ_PHONE_STATE hinzuzufügen.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    serial = Build.getSerial(); // Requires permission READ_PHONE_STATE
} else {
    serial = Build.SERIAL; // Will return 'unknown' for device >= Build.VERSION_CODES.O
}

Und bekommen die IMEI oder MEID auf diese Weise:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    String imei = tm.getImei(); // Requires permission READ_PHONE_STATE
    serial = imei == null ? tm.getMeid() : imei; // Requires permission READ_PHONE_STATE
} else {
    serial = tm.getDeviceId(); // Requires permission READ_PHONE_STATE
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top