¿Cómo puede una aplicación detectar la singularidad de mi dispositivo?

Si instalo una aplicación, la desinstalo y finalmente la vuelvo a instalar más tarde, ¿cómo puede detectar la aplicación si se instaló en este dispositivo antes? ¿Cuáles son las identificaciones únicas del dispositivo que puede detectar?

  1. ID del dispositivo Android: lo cambié con el cambiador de ID del dispositivo (ahora eliminado de Play Store, no puedo dar el enlace).
  2. ID de publicidad de Google: cambió eso también
  3. no inició sesión en la aplicación con ninguna cuenta utilizada anteriormente.

Qué otras formas puede usar una aplicación para detectar si se instaló anteriormente en el dispositivo. Doy acceso a Internet a la aplicación.

Sin IMEI, estoy usando una tableta.

No estoy seguro de dónde está almacenado (probablemente en el packages.xml), pero también me preguntaba cuándo descubrir que puede pm list packages -u, con el -uparámetro explicado como También incluir paquetes desinstalados . Por lo tanto, parece que el propio Android realiza un seguimiento de las aplicaciones que desinstala incluso, que en mi humilde opinión solo se pueden "limpiar" mediante un restablecimiento de fábrica (al menos para un "usuario normal").
@Izzy Un paquete 'desinstalado' siempre se puede purgar con pm uninstall. Un paquete se eliminará por completo si todos los usuarios (incluido el invitado) lo han desinstalado en sus perspectivas. Además, si solo existe un usuario (nuevamente, invitado incluido) en el sistema, entonces su eliminación de un paquete también lo eliminará por completo. Por 'eliminar por completo' me refiero a que el sistema no guarda ningún registro del paquete, a pesar de que algunas aplicaciones de terceros pueden mantener su propio 'historial de operaciones'.
@iBug Nunca encontré ningún rastro con el -u, por lo que todo lo que puedo hacer es "preguntarme", como dice mi comentario anterior. Pero gracias por esos detalles!
@Izzy Yo también. Incluso me pregunté si la opción -uestaba rota porque yo tampoco encontré rastro de ella. Pero todo lo que debería haber estado allí existió en packages.xml.
@iBug, por supuesto, ya que eso es lo que se pmusa como "backend" :)

Respuestas (2)

Como dijo RossC, sí, depende de los desarrolladores cómo mantienen la lógica para detectar la singularidad. Como también soy un desarrollador (aplicación de Windows) y mi forma preferida es mantener la identificación del dispositivo en la nube. Entonces, cada vez que el dispositivo se conecta a Internet, se sincroniza con nuestros servidores para instalaciones anteriores y es fácil para los usuarios usarlo en múltiples dispositivos. Otras formas fáciles son colocar algún archivo dentro de las carpetas del sistema Android como data, usr o donde sea.

Es posible que la aplicación deje una carpeta con algunos datos. Tendría que ir y eliminar manualmente las carpetas para asegurarse de que se eliminen todos los datos. Si reinstala la aplicación, verificará esa carpeta y sabrá que se instaló.

Un ejemplo sencillo es The Bard's Tale, el juego. Instalas unos 20 Mb de un archivo de Play Store y abres el juego. El juego descarga alrededor de 3 Gb de datos adicionales (versión de texturas HD) en tu SD interna/externa. Luego juegas el juego y lo guardas varias veces, creando archivos guardados en el dispositivo. Luego desinstalas el juego. Los 3 Gb de texturas Y tus partidas guardadas permanecen en la SD interna/externa. Si lo reinstala, lo ocupa justo donde lo dejó.

No es tanto que reconozca su dispositivo, es que todavía tiene los datos.

Algo así como ES File Manager , le informará que ha desinstalado una aplicación que ha dejado datos y le pedirá que elija si desea eliminarla. Necesitará acceso de para eliminar aplicaciones del sistema o cualquier cosa dentro/system

No tengo acceso de root en mi Nexus 4, pero ES File Manager aún me pregunta si quiero eliminar los datos dejados por una aplicación que desinstalé.
@adinia gracias! No tengo ningún dispositivo que no esté rooteado, así que adiviné. He editado mi respuesta ahora, ¡buen lugar! ¡Ojalá sea ahora mismo!