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

56
demandé sur ShiDoiSi 2011-01-26 01:05:59

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.

27
répondu ninjasense 2017-05-23 11:47:29

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.
14
répondu userM1433372 2017-04-13 13:16:07

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" />
13
répondu Vincent Vettukal 2018-07-06 18:09:52

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.

6
répondu Squonk 2011-01-25 22:29:47

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:

  1. Google Play appareils compatibles.
  2. Politique De Confidentialité: https://support.google.com/googleplay/android-developer/answer/113469?hl=en&rd=1#privacy
1
répondu semicircle21 2016-08-15 14:07:28
//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.

0
répondu boraberka 2018-09-05 12:44:45