Secure.ANDROID_ID è univoco per ogni dispositivo?

Sto usando questa chiamata:

Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 

Per ottenere un UID per il dispositivo. Penso che sto ottenendo lo stesso ID da più dispositivi però. Dovrebbe essere ansible?

L’ID in questione è: 9774d56d682e549c e apparentemente c’è un problema con diversi dispositivi che restituiscono questo ID http://code.google.com/p/android/issues/list?cursor=10603&updated=10603&ts=1295993403

Controlla in questa discussione,. Tuttavia dovresti stare attento dato che è documentato come “può cambiare al reset di fabbrica”. Utilizzare a proprio rischio e può essere facilmente modificato su un telefono rooted. Inoltre sembra che alcuni produttori abbiano avuto problemi con i loro telefoni che hanno thread di numeri duplicati. A seconda di cosa stai cercando di fare, probabilmente non lo userei come UID.

Con Android O il comportamento di ANDROID_ID cambierà. ANDROID_ID sarà diverso per app per utente al telefono.

Tratto da: https://android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html

ID Android

In O, l’ID Android (Settings.Secure.ANDROID_ID o SSAID) ha un valore diverso per ogni app e ciascun utente sul dispositivo. Gli sviluppatori che richiedono un identificatore con ambito dispositivo, dovrebbero invece utilizzare un identificatore reimpostabile, come ID pubblicità, che offre agli utenti un maggiore controllo. Advertising ID fornisce anche un’impostazione rivolta all’utente per limitare il monitoraggio degli annunci.

Inoltre in Android O:

  • Il valore ANDROID_ID non cambierà in caso di disinstallazione / reinstallazione del pacchetto, purché il nome del pacchetto e la chiave di firma coincidano. Le app possono contare su questo valore per mantenere lo stato tra le reinstallazioni.
  • Se un’app è stata installata su un dispositivo con una versione precedente di Android, l’ID Android rimane lo stesso quando il dispositivo viene aggiornato ad Android O, a meno che l’app non venga disinstallata e reinstallata.
  • Il valore ID Android cambia solo se il dispositivo viene ripristinato in fabbrica o se la chiave di firma ruota tra la disinstallazione e
    reinstallare eventi.
  • Questa modifica è richiesta solo per i produttori di dispositivi che effettuano spedizioni con servizi Google Play e ID pubblicità. Altri produttori di dispositivi possono fornire un ID ripristinabile alternativo o continuare a fornire ID ANDROID.

Quindi, se vuoi qualcosa di unico per il dispositivo stesso, TM.getDeviceId() dovrebbe essere sufficiente.

Ecco il codice che mostra come ottenere l’ID gestore di telefonia. L’ID dispositivo Android che stai utilizzando può cambiare alle impostazioni di fabbrica e anche alcuni produttori hanno problemi nel fornire un ID univoco.

 TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); String androidId = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID); Log.d("ID", "Android ID: " + androidId); Log.d("ID", "Device ID : " + tm.getDeviceId()); 

Assicurati di prendere le autorizzazioni per TelephonyManager usando

  

Ho letto alcune cose su questo argomento e sfortunatamente ANDROID_ID non dovrebbe essere invocato per l’identificazione univoca di un singolo dispositivo.

Non sembra essere applicato nei requisiti di conformità di Android e quindi i produttori sembrano implementarlo nel modo in cui scelgono, inclusi alcuni che lo utilizzano più come un ‘modello’ ID, ecc.

Inoltre, tieni presente che anche se un produttore ha scritto un generatore per renderlo un UUID (ad esempio), non è garantito che sopravviva al ripristino dei dati di fabbrica.

Basta elencare una soluzione alternativa qui, l’ID pubblicità:

https://support.google.com/googleplay/android-developer/answer/6048248?hl=en

Copiato dal link qui sopra:

L’ID pubblicità è un ID unico e ripristinabile dall’utente per la pubblicità, fornito dai servizi di Google Play. Offre agli utenti controlli migliori e offre agli sviluppatori un sistema semplice e standard per continuare a monetizzare le loro app. Consente agli utenti di reimpostare il proprio identificativo o distriggersre gli annunci personalizzati (precedentemente noti come annunci basati sugli interessi) all’interno delle app di Google Play.

Le limitazioni sono:

  1. Solo dispositivi abilitati a Google Play.
  2. Informativa sulla privacy: https://support.google.com/googleplay/android-developer/answer/113469?hl=en&rd=1#privacy