Certaines applications Android peuvent se rappeler si elles ont déjà été installées sur le même appareil. Supposons que vous ayez désinstallé une application il y a un an. Après un an, si vous installez à nouveau la même application, cette application sera en mesure de reconnaître qu'elle a déjà été installée sur le même téléphone.
Cette technique est utilisée par les applications en ligne pour interdire définitivement aux utilisateurs de créer un nouveau compte s'ils ont déjà été bannis du service. Lorsque ces utilisateurs créent un nouveau compte en réinstallant l'application ultérieurement, ces applications sont en mesure de détecter leur "présence initiale" et d'envoyer ces informations aux serveurs afin que l'utilisateur puisse à nouveau être banni.
Comment ils le font même après avoir effacé leurs données et les avoir désinstallés complètement? Cela signifie qu'ils conservent un fichier quelque part dans le téléphone, qui n'est pas supprimé après la désinstallation. Comment désactiver cette détection?
la source
Do app creators have rights?
En fait, sur mon téléphone, ils ne le font pas. Je peux les laisser exécuter leur code et stocker leurs données sur mon téléphone, mais ils n’ont pas le droit de le faire et je me réserve le droit de révoquer les deux privilèges à ma discrétion.Réponses:
Il existe plusieurs façons d'identifier un périphérique unique ou son utilisateur:
ANDROID_ID
(unique par nouvelle installation) : cette méthode est simple mais nécessite un accès Internet, du moins à la première utilisation. Ce n'est pas très intrusif et ne persiste pas en cas de réinitialisation d'usine. C'est aussi unique par utilisateur. Voir cette information .ANDROID_ID
approche mais nécessite l'autorisation explicite (Android 6.0+) de l'utilisateur. Les applications qui tirent parti de l'écosystème du compte Google (par exemple, les scores élevés et les performances dans les jeux) peuvent ainsi suivre un utilisateur spécifique et obtenir davantage d'informations que si l'application a été installée ou non.2, 3 et 4 nécessitent une connexion réseau et un serveur du côté du développeur.
la source
strace
utilitaire qui peut être utilisé pour garder une trace de tous les appels système. Donc, vous devez démarrer votre application en utilisantstrace
et vérifier tous les appels système liés aux fichiers sur l'appareil et vous repérerez tous les fichiers lus / vérifiés pour l'existence par l'application. Bien sûr: probablement assez difficile à faire sur le smartphone mais certainement possible .Il n'est pas connecté au stockage, mais au cloud. C'est ainsi qu'il se souvient même si vous avez supprimé vos données. Pour désactiver cette option, accédez à l'application des paramètres de votre appareil, appuyez sur les comptes google sous personnel (appuyez sur le compte de votre choix si vous avez plusieurs comptes), puis désactivez les applications que vous ne souhaitez pas synchroniser automatiquement.
la source
La réponse de GiantTree couvre le mieux, mais il y a un autre point à considérer. Ce serait clairement un " motif sombre ", mais cette identification pourrait également se faire par la prise d’ empreintes digitales de certaines données d’utilisateur - ceci peut être considéré comme une variante de son premier point ("conserver un fichier"), mais il serait plus difficile à détecter et moins pratique. éviter.
Sa résilience dépend des données choisies. La méthode la plus évidente consisterait à examiner les coordonnées et à utiliser une forme d’empreinte digitale. une alternative pourrait être l'utilisation d'horodatages de photos et d'autres métadonnées. Il est clair que ces dernières changent avec le temps, quelle que soit la méthode utilisée, elle doit toujours donner une réponse précise après modification (elle diffère donc d'une fonction de hachage traditionnelle). De plus, rien ne garantit qu'un utilisateur n'efface pas simplement les données suivies, mais dans de nombreux cas, les utilisateurs préfèrent ne pas le faire.
Vous voudrez peut-être examiner les empreintes digitales des navigateurs pour avoir une idée de la procédure, même si la situation sera quelque peu différente, car le matériel du téléphone est généralement plus uniforme que celui du PC. Cela dit, l'ajout de certains détails du téléphone peut aider à réduire un peu l'empreinte digitale.
Cette approche est particulièrement problématique si un utilisateur change de téléphone et emmène ses détails avec eux sur un nouveau téléphone (dans ce cas, le nouveau téléphone peut être détecté comme ayant déjà été installé, comme la question posée. Cependant, il semble tout à fait probable que dans le cas où une application tente d'interdire un utilisateur, cela pourrait en fait être le résultat souhaité (plutôt que d'interdire le téléphone spécifique lui-même).
Remarque: en aucun cas, je ne dis que cela est correct ou "bon" comme moyen de fonctionner si vous écrivez des applications, mais il semble raisonnable d'en discuter, car ce n'est que par la discussion que les gens détermineront s'ils sont assez concerné pour faire quelque chose à ce sujet et ce que cela pourrait être.
la source
Il existe une classe SharedPreferences - https://developer.android.com/reference/android/content/SharedPreferences.html - que certaines applications utilisent pour stocker des données de préférences. Ces données ne sont pas supprimées lors de la désinstallation de l'application. Si l'application est réinstallée par la suite, les clés SharedPreferences précédemment enregistrées sont toujours disponibles.
la source
SharedPreferences
sont réellement supprimés lorsque l'application est désinstallée. Les développeurs disposent de plusieurs moyens pour configurer les sauvegardes, mais par défaut, elles sont supprimées lors de la désinstallation. (Source: en tant que développeur, je désinstalle mes applications pour effacer les préférences. Voir aussi: stackoverflow.com/a/9815641/1438733 )Il existe une autre possibilité: utiliser des cookies persistants avec un très long "délai d’expiration". J'imagine que c'est ainsi que plusieurs applications d'un même développeur partageaient généralement les informations d'identification, lorsque les informations d'identification stockées via la fonctionnalité des comptes n'étaient pas aussi ouvertes / connues du public.
la source