sponsored - quitar publicidad en android facil
Una aplicación de Android recuerda sus datos después de la desinstalación y reinstalación (8)
Agregar Android: allowBackup = "false" bajo la etiqueta de la aplicación en el archivo Manifiesto resolvió mi problema.
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 sistema operativo 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?
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
Es porque Android 6 tiene copia de seguridad automática.
android:allowBackup
ajustar
android:allowBackup
y
android:fullBackupContent
en su etiqueta
<application>
manifiesto si no desea hacer una copia de seguridad de sus datos o si desea incluir o excluir algunos recursos.
No es un error.
Más información sobre AutoBackup en Android here .
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:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.XXXXXXX" android:versionName="8.0.0" android:installLocation="auto" android:versionCode="439">
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="24" />
<application
android:label="@string/appName"
android:icon="@drawable/icon_small"
android:installLocation="internalOnly"
android:largeHeap="true"
android:allowBackup="false"
android:fullBackupOnly="false"
/>
...
</manifest>
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 forma predeterminada para aplicaciones que no especifican el valor de ninguna manera.
Recientemente necesité aprovechar estas características, pude descubrir la documentación y, después de extensas pruebas, 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, 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.
Si está apuntando a Android 10, entonces debe poner
android:hasFragileUserData="true"
en la etiqueta de la aplicación de
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:name=".MyApplication" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:allowBackup="true" android:hasFragileUserData="true"> ..... </application> </manifest>
android: hasFragileUserData es una nueva configuración de manifiesto (supongo). "Si es verdadero, se le solicita al usuario que mantenga los datos de la aplicación al desinstalar". Esto parece propicio para el abuso, pero puedo ver dónde podría ser útil para algunas aplicaciones.
Ver https://commonsware.com/blog/2019/06/06/random-musings-q-beta-4.html
Simplemente cambie android: allowBackup = "true" a android: allowBackup = "false" en manifiest.xml. Será trabajado
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<application
android:allowBackup="false"
android:icon="@mipmap/app_icon"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
</manifest>
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.