Will TelephonyManger.getDeviceId () ritorno dispositivo id per tavolette come Galaxy Tab ...?

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

  •  25-09-2019
  •  | 
  •  

Domanda

Voglio ottenere l'ID del dispositivo che sarà unico per ogni dispositivo Android. Attualmente sto sviluppando per un dispositivo tablet. Vuoi ottenere unico dispositivo id e memorizzare i valori corrispondenti ...

Quindi, voglio sapere se i dispositivi Tablet restituirà un valore se io uso TelephonyManager.getDeviceId () ... ??? O c'è qualche altro valore che è unico per ogni dispositivo ???

È stato utile?

Soluzione

Questa è non una domanda duplicato. Come si è visto, CTS di Google richiedono che getPhoneType di TelephonyManager deve essere nessuno e GetDeviceID di TelephonyManager deve essere nullo per i dispositivi non-telefono.

Quindi, per ottenere IMEI, si prega di tentare di utilizzare:

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

Purtroppo, SystemProperties è una classe non pubblica nel sistema operativo Android, il che significa che non è disponibile al pubblico per normali applicazioni. Prova a guardare questo post per chiedere aiuto accedervi: Dove è android.os.SystemProperties

Altri suggerimenti

TelephonyManger.getDeviceId () Restituisce l'ID univoco del dispositivo, ad esempio, l'IMEI per GSM e il MEID o ESN per i telefoni CDMA.

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

Ma mi consiglia di utilizzare:

Settings.Secure.ANDROID_ID , che restituisce l'ID Android come una stringa unica esadecimale a 64 bit.

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

A volte TelephonyManger.getDeviceId () restituirà null, in modo da assicurare un ID univoco che si intende utilizzare questo metodo:

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

Dal momento che Android 8 tutto è cambiato. Si dovrebbe usare Build.getSerial(), per ottenere il numero di serie del dispositivo e aggiungere il READ_PHONE_STATE autorizzazione.

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
}

E ottenere il codice IMEI o MEID in questo modo:

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
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top