Est Sécurisé.ANDROID ID unique pour chaque appareil?
j'utilise cet appel:
Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);
pour obtenir un UID pour l'appareil. Je pense que j'obtiens le même ID de plusieurs appareils cependant. Cela devrait-il être possible?
L'ID en question est: 9774d56d682e549c et apparemment il y a un problème avec plusieurs dispositifs de retour cette ID de http://code.google.com/p/android/issues/list?cursor=10603&updated=10603&ts=1295993403
6 réponses
Vérifier dans cette thread ,. Cependant, vous devez être prudent car il est documenté comme "peut changer lors de la réinitialisation de l'usine". Utilisez à vos propres risques, et il peut être facilement modifié sur un téléphone enracinée. En outre, il semble que certains fabricants ont eu des problèmes avec leurs téléphones ayant des numéros dupliqués thread . Selon ce que vous tentez de faire, Je ne l'utiliserais probablement pas comme UID.
avec Android O le comportement de L'ANDROID_ID va changer. L'ANDROID_ID sera différent par app par utilisateur sur le téléphone.
tiré de: https://android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html
Android ID
In O, Android ID (Settings.Sécuriser.ANDROID_ID ou SSAID) a une valeur différente pour chaque application et chaque utilisateur sur le périphérique. Développeurs qui ont besoin d'un le périphérique-scoped identifier, devrait plutôt utiliser un identifiant resettable, comme L'ID de la publicité, donnant aux utilisateurs plus de contrôle. Advertising ID fournit également un paramètre face à l'utilisateur pour limiter le suivi des annonces.
en outre dans Android O:
- la valeur ANDROID_ID ne changera pas lors de la désinstallation/réinstallation du paquet, car tant que le nom du paquet et la clé de signature sont les mêmes. Les applications peuvent compter sur cette valeur pour maintenir l'état à travers le réinstalle.
- si une application a été installée sur un dispositif exécutant une version antérieure de Android, L'ID Android reste le même lorsque l'appareil est mise à jour vers Android O, sauf si l'application est désinstallée et réinstaller.
- la valeur D'ID Android ne change que si l'appareil est en usine
réinitialiser ou si la clé de signature tourne entre uninstall et
réinstaller les événements. - cette modification n'est requise que pour les fabricants de dispositifs l'expédition avec Google Play Services et publicité ID. Autre les fabricants de dispositifs peuvent fournir une alternative ID Ou Continuer à fournir L'ID ANDROID.
donc si vous voulez quelque chose d'unique à l'appareil lui-même, TM.getDeviceId()
devrait être suffisant.
voici le code qui montre comment obtenir L'ID du Gestionnaire de téléphonie. L'ID de périphérique android que vous utilisez peut changer sur les paramètres d'usine et aussi certains fabricants ont des problèmes à donner l'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 permissions pour TelephonyManager
en utilisant
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
j'ai lu quelques trucs à ce sujet et malheureusement L'ANDROID_ID ne devrait pas être utilisé pour identifier un périphérique particulier.
il ne semble pas être appliquée dans les exigences de conformité Android et donc les fabricants semblent mettre en œuvre la façon dont ils choisissent, y compris certains l'utilisant plus comme un "modèle" ID, etc
sachez aussi que même si un fabricant a écrit un générateur pour en faire un UUID (par exemple), ce n'est pas garantis pour survivre à une réinitialisation d'usine.
il suffit d'énumérer une solution alternative ici, L'ID de la publicité:
https://support.google.com/googleplay/android-developer/answer/6048248?hl=en
copié du lien ci-dessus:
l'identifiant publicitaire est un identifiant unique, utilisable pour la publicité, fourni par Google Play services. Il donne 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 identification ou désactivation des annonces personnalisées (anciennement connue sous le nom d'annonces basées sur les intérêts) dans Googleapps.
les limitations sont:
- Google Play appareils compatibles.
- Politique De Confidentialité:
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, Sécurisé.ANDROID_ID est unique pour chaque périphérique.