Will TelephonyManger.getDeviceId () ritorno dispositivo id per tavolette come Galaxy Tab ...?
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 ???
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
}