J'utilise cet appel:
Secure.getString(getApplicationContext().getContentResolver(), Secure.Android_ID);
Pour obtenir un UID pour le périphérique. Je pense cependant que je reçois le même identifiant de plusieurs appareils. Cela devrait-il être possible?
L'ID en question est: 9774d56d682e549c et apparemment, plusieurs appareils l'ont renvoyé http://code.google.com/p/Android/issues/list?cursor=10603&updated=10603&ts=1295993403
Vérifiez dans ce thread ,. Cependant, vous devez faire attention car il est documenté que "peut changer lors de la réinitialisation d'usine". Utilisez-le à vos risques et périls et il peut être facilement modifié sur un téléphone enraciné. En outre, il semble que certains fabricants ont eu des problèmes avec leurs téléphones ayant des numéros en double thread . Selon ce que vous essayez de faire, je ne l’utiliserai probablement pas comme un UID.
Avec Android O, le comportement de Android_ID va changer. Android_ID sera différent par application et par utilisateur du téléphone.
Extrait de: https://Android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html
Identifiant Android
Dans O, l'ID Android (Settings.Secure.Android_ID ou SSAID) a une valeur différente pour chaque application et pour chaque utilisateur de l'appareil. Les développeurs nécessitant un identifiant ayant une étendue d'appareil devraient plutôt utiliser un identifiant réinitialisable, tel que l'ID de publicité, pour donner plus de contrôle aux utilisateurs. L'ID de publicité fournit également un paramètre permettant aux utilisateurs de limiter le suivi des annonces.
De plus dans Android O:
Donc, si vous voulez quelque chose d'unique sur le périphérique lui-même, TM.getDeviceId()
devrait suffira.
Voici le code qui montre comment obtenir un ID de gestionnaire de téléphonie. L'ID de périphérique Android que vous utilisez peut changer en fonction des paramètres d'usine. Certains fabricants ont également du mal à donner un ID unique.
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());
Assurez-vous de prendre les autorisations pour TelephonyManager
en utilisant
<uses-permission Android:name="Android.permission.READ_PHONE_STATE" />
J'ai lu quelques articles à ce sujet et, malheureusement, on ne devrait pas se fier à Android_ID pour identifier un appareil en particulier.
Il ne semble pas être appliqué dans les exigences de conformité Android et les fabricants semblent donc le mettre en œuvre comme ils le souhaitent, y compris en l'utilisant davantage comme identifiant de modèle, etc.
Sachez également que même si un fabricant a écrit un générateur pour en faire un UUID (par exemple), il n’est pas garanti qu’il survivra à une réinitialisation des paramètres d’usine.
Il suffit de lister ici une autre solution, l’identifiant publicitaire:
https://support.google.com/googleplay/Android-developer/answer/6048248?hl=en
Copié à partir du lien ci-dessus:
L'identifiant publicitaire est un identifiant publicitaire unique, réinitialisable par l'utilisateur, fourni par les services Google Play. Il offre aux utilisateurs de meilleurs contrôles et fournit aux développeurs un système simple et standard pour continuer à monétiser leurs applications. Il permet aux utilisateurs de réinitialiser leur identifiant ou de désactiver les annonces personnalisées (anciennement appelées annonces par centres d'intérêt) dans les applications Google Play.
Les limitations sont:
https://support.google.com/googleplay/Android-developer/answer/113469?hl=en&rd=1#privacy
//Fields
String myID;
int myversion = 0;
myversion = Integer.valueOf(Android.os.Build.VERSION.SDK);
if (myversion < 23) {
TelephonyManager mngr = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
myID= mngr.getDeviceId();
}
else
{
myID =
Settings.Secure.getString(getApplicationContext().getContentResolver(),
Settings.Secure.Android_ID);
}
Oui, Secure.Android_ID est unique pour chaque appareil.