Mientras desarrollaba una aplicación de Android dirigida a todas las versiones anteriores a 4.1, observé que desinstalar mi aplicación e instalarla nuevamente no borra sus datos.
La aplicación está diseñada para almacenar los detalles que solicita en su primera pantalla. Después de desinstalar e instalar nuevamente en el SO versión 4.4.4, la aplicación solicita al usuario que complete los datos, lo cual es normal. Sin embargo, en la versión 6.0, la misma secuencia de instalación / desinstalación devuelve los datos ingresados originalmente.
Intenté asegurarme visitando /data/data/my package folder
para ver que la base de datos desapareció después de la desinstalación y, de hecho, esa carpeta se elimina durante la desinstalación.
Intenté eliminar la aplicación visitando la página de configuración, a través de Titanium Backup y los resultados son los mismos. El dispositivo está rooteado Nexus 5 con v6.0.
¿Cuál podría ser la razón de este extraño comportamiento?
fuente
La respuesta de greywolf82 es correcta, pero quiero agregar algo de información a esto.
Al desarrollar mi aplicación de Android (usando Xamarin), noté que cada vez que reiniciaba la aplicación desde Visual Studio, mis datos volverían a los datos de hace unos meses. No importó si simplemente me detuve y volví a ejecutarlo desde VS, o si desinstalé completamente la aplicación y la reinstalé.
También vale la pena señalar que nunca le dijimos explícitamente a la aplicación que almacenara una copia de seguridad.
La copia de seguridad también parecía sobrescribir los datos más nuevos cuando se iniciaba desde Visual Studio, y tenemos informes de usuarios que utilizan la versión de lanzamiento de nuestra aplicación y también reciben datos más nuevos sobrescritos por las copias de seguridad.
Como no sé exactamente cuándo ocurren las copias de seguridad y las restauraciones, esta característica parece causar solo problemas.
Hemos modificado nuestro AndroidManifest como se muestra en el siguiente xml:
Una vez que establecemos explícitamente el valor en falso, todo parece funcionar. Esperaría que esta sea una función opcional, pero ... parece que podría estar activada de manera predeterminada para aplicaciones que no especifican el valor de ninguna manera.
fuente
Debe verificar la configuración de Copia de seguridad y restablecimiento de su dispositivo, y desactivar la Restauración automática (al reinstalar una aplicación, se restaurarán las configuraciones y los datos respaldados).
Desactivar la copia de seguridad automática es diferente de la restauración automática. Si cree que será útil activar la copia de seguridad automática para su aplicación, hágalo. Pero si cree que esto hará que los usuarios finales que no sean conscientes de que la función de restauración automática de su dispositivo esté activada, no duden en desactivarla.
En mi caso, desactivé la función allowBackup, pero como ya tenía una copia de seguridad de la versión anterior en la nube, seguía restaurando.
Vea la imagen como referencia para un dispositivo Samsung en Android 6.0. Otros dispositivos y versiones pueden tener una pantalla diferente. Ver imagen a continuación.
Configuración de restauración automática en Copia de seguridad y restablecimiento
fuente
Recientemente necesité aprovechar estas características, pude descubrir la documentación y, después de realizar pruebas exhaustivas, esto es lo que he podido deducir:
Android: allowbackup: realizará una copia de seguridad de los datos de la aplicación local en el dispositivo en el que se encuentra.
Android: fullBackupContent: se usa junto con la API de restauración de copias de seguridad de Google y PUEDE controlarse a través de un archivo xml para especificar exactamente qué hacer una copia de seguridad, así como una clase BackupManager que puede implementar para un mayor control sobre el proceso.
Sin embargo, la documentación indica, y he confirmado con las pruebas, que una restauración solo ocurrirá cuando el dispositivo se restaure y se active el proceso de restauración de datos de la aplicación. O también se restaurará cuando la aplicación se descargue a través de adb, que es lo que hacemos cuando ejecutamos la aplicación para probarla o depurarla en nuestros dispositivos a través de Android Studio. Tenga en cuenta que si configura android: allowbackup pero no configura android: fullBackupContent con un código de API de Google, los datos de las aplicaciones solo se almacenan localmente, mientras que si los configuró correctamente, entonces si su aplicación fue respaldada y obtiene un nuevo dispositivo, las aplicaciones los datos se almacenaron en la nube para poder restaurarlos en un nuevo dispositivo.
fuente
Agregar Android: allowBackup = "false" bajo la etiqueta de la aplicación en el archivo Manifiesto resolvió mi problema.
Aquí va la documentación de Android para hacer una copia de seguridad de los datos del usuario con Copia de seguridad automática
fuente
Simplemente cambie android: allowBackup = "true" a android: allowBackup = "false" en manifiest.xml. Será trabajado
fuente
Solo agregando a esto, encontramos que en Android 9 (en un dispositivo HMD Nokia) que los activos se mantuvieron, incluso después de eliminar la aplicación a través de la interfaz y a través de adb.
La respuesta de agregar:
android:allowBackup="false" android:fullBackupOnly="false"
Obviamente, esta no es una respuesta nueva, sino una observación para las personas que estaban en la misma posición que nosotros.
fuente
Si está apuntando a Android 10, entonces debe colocar la
android:hasFragileUserData="true"
etiqueta de aplicación deAndroidManifest.xml
Ver https://commonsware.com/blog/2019/06/06/random-musings-q-beta-4.html
fuente