Lors du développement d'une application Android ciblant toutes les versions supérieures à 4.1, j'ai observé que la désinstallation de mon application et sa réinstallation n'efface pas ses données.
L'application est conçue pour stocker les détails qu'elle demande dans son premier écran. Après avoir désinstallé et réinstallé la version 4.4.4 du système d'exploitation, l'application invite l'utilisateur à remplir les données, ce qui est normal. Cependant, dans la version 6.0, la même séquence d'installation / désinstallation ramène les données entrées à l'origine.
J'ai essayé de m'assurer en visitant /data/data/my package folder
pour voir que la base de données avait disparu après la désinstallation et que ce dossier était effectivement supprimé lors de la désinstallation.
J'ai essayé de supprimer l'application en visitant la page des paramètres, via Titanium Backup et les résultats sont les mêmes. L'appareil est enraciné Nexus 5 exécutant la v6.0.
Quelle pourrait être la raison de ce comportement étrange?
la source
La réponse de greywolf82 est correcte mais je veux ajouter quelques informations à cela.
Lors du développement de mon application Android (à l'aide de Xamarin), j'ai remarqué que chaque fois que je relançais l'application à partir de Visual Studio, mes données revenaient aux données d'il y a quelques mois. Peu importe si je l'ai simplement arrêté et relancé à partir de VS, ou si j'ai complètement désinstallé l'application et réinstallée.
Il convient également de noter que nous n'avons jamais explicitement dit à l'application de stocker une sauvegarde.
La sauvegarde semblait également écraser les données plus récentes lors du lancement à partir de Visual Studio, et nous avons des rapports d'utilisateurs utilisant la version de version de notre application et obtenant également des données plus récentes écrasées par les sauvegardes.
Comme je ne sais pas exactement quand les sauvegardes et les restaurations se produisent, cette fonctionnalité semble ne causer que des problèmes.
Nous avons modifié notre AndroidManifest comme indiqué dans le xml suivant:
Une fois que nous avons explicitement défini la valeur sur false, tout semble fonctionner. Je m'attendrais à ce que ce soit une fonctionnalité optionnelle, mais ... il semble que cela puisse être activé par défaut pour les applications qui ne spécifient pas la valeur de toute façon.
la source
Vous devez vérifier les paramètres de sauvegarde et de réinitialisation de votre appareil et désactiver la restauration automatique (lors de la réinstallation d'une application, les paramètres et les données sauvegardés seront restaurés.)
La désactivation de la sauvegarde automatique est différente de la restauration automatique. Si vous pensez qu'il sera utile d'activer la sauvegarde automatique pour votre application, faites-le. Mais si vous pensez que cela rendra les utilisateurs finaux qui ne savent pas que la fonction de restauration automatique de leur appareil est activée, n'hésitez pas à la désactiver.
Dans mon cas, j'ai désactivé la fonction allowBackup, mais comme j'avais déjà une sauvegarde de la version précédente sur le Cloud, la restauration continuait.
Voir l'image comme référence pour un appareil Samsung sous Android 6.0. D'autres appareils et versions peuvent avoir un écran différent. Voir l'image ci-dessous.
Paramètre de restauration automatique sous Sauvegarde et réinitialisation
la source
J'ai récemment eu besoin de profiter de ces fonctionnalités, j'ai pu découvrir de la documentation et après des tests approfondis, c'est ce que j'ai pu déduire:
Android: allowbackup - sauvegardera les données de l'application locale sur l'appareil sur lequel il se trouve.
Android: fullBackupContent - est utilisé en conjonction avec l'API de restauration de sauvegarde de Google et PEUT être contrôlé via un fichier xml pour spécifier exactement ce qu'il faut sauvegarder, ainsi qu'une classe BackupManager que vous pouvez implémenter pour un contrôle supplémentaire sur le processus.
Cependant, la documentation indique, et j'ai confirmé avec des tests, qu'une restauration ne se produira que lorsque l'appareil est restauré et que le processus de restauration des données de l'application est déclenché. OU il sera également restauré lorsque l'application est téléchargée via adb, ce que nous faisons lorsque nous exécutons l'application pour tester ou déboguer sur nos appareils via Android Studio. Notez que si vous définissez android: allowbackup mais ne configurez pas android: fullBackupContent avec un code api Google, les données des applications ne sont stockées que localement, tandis que si vous les avez correctement configurées, si votre application a été sauvegardée et que vous obtenez un nouvel appareil, les applications les données ont été stockées sur le cloud afin de pouvoir être restaurées sur un nouvel appareil.
la source
L'ajout d'android: allowBackup = "false" sous la balise d'application dans le fichier Manifest a résolu mon problème.
Voici la documentation Android pour la sauvegarde des données utilisateur avec la sauvegarde automatique
la source
Changez simplement android: allowBackup = "true" en android: allowBackup = "false" dans manifiest.xml. Cela fonctionnera.
la source
En ajoutant simplement à cela, nous avons constaté que dans Android 9 (sur un appareil HMD Nokia), les actifs étaient conservés, même après la suppression de l'application via l'interface et via adb.
La réponse d'ajouter:
android:allowBackup="false" android:fullBackupOnly="false"
Évidemment, ce n'est pas une nouvelle réponse - mais une observation pour des gens qui étaient dans la même situation que nous.
la source
Si vous ciblez Android 10, vous devez mettre
android:hasFragileUserData="true"
une balise d'application deAndroidManifest.xml
Voir https://commonsware.com/blog/2019/06/06/random-musings-q-beta-4.html
la source