J'ai du mal à récupérer des valeurs (sur un appareil Android 9.0) à partir des préférences partagées après avoir réinstallé l'application et tout en ayant allowBackup = true.
<manifest ... >
...
<application android:allowBackup="true" ... >
...
</application>
</manifest>
Selon cela: https://developer.android.com/guide/topics/data/autobackup
Les préférences partagées devraient être restaurées?
SharedPreferences prefs = getSharedPreferences("TEST", MODE_PRIVATE);
String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.
int idName = prefs.getInt("idName", 0); //0 is the default value.
SharedPreferences.Editor editor = getSharedPreferences("TEST", MODE_PRIVATE).edit();
editor.putString("name", "Elena");
editor.putInt("idName", 12);
editor.apply();
- Je me suis connecté à mon compte Gmail sur le téléphone (émulateur) (API 27) et lorsque je vais à l'application Drive, aux sauvegardes, aux données d'application, je vois 18 applications telles que Youtube, Gmail, etc. et également ma propre application.
- Lorsque je vais dans "Paramètres> Système> Sauvegarde", je vois les mêmes applications et aussi ma propre application. Je charge l'application, le code sharedprefs est exécuté. Je ferme l'application et la supprime de la mémoire. Et puis j'appuie sur le bouton "Sauvegarder maintenant":
Pour vérifier, je peux voir mon application dans la liste et elle a été sauvegardée il y a 0 minutes:
Ensuite, je supprime et réinstalle l'application et je m'attends à ce que les 2 valeurs (Elena et 12) soient là. Mais ils sont effacés ...
J'ai également essayé la même chose via la ligne de commande, mais ne fonctionnait pas non plus: https://developer.android.com/guide/topics/data/testingbackup.html#Preparing
adb shell
dreamlte:/ $ bmgr enabled
Backup Manager currently enabled
dreamlte:/ $ bmgr list transports
android/com.android.internal.backup.LocalTransport
com.google.android.gms/.backup.migrate.service.D2dTransport
* com.google.android.gms/.backup.BackupTransportService
dreamlte:/ $ bmgr backupnow my.package.name
Running incremental backup for 1 requested packages.
Package @pm@ with result: Success
Package nl.dagelijkswoord.android with progress: 1536/309248
Package nl.dagelijkswoord.android with result: Success
Backup finished with result: Success
dreamlte:/ $ dumpsys backup
Backup Manager is enabled / provisioned / not pending init
Auto-restore is disabled
No backups running
Last backup pass started: 1573804513565 (now = 1573806675410)
next scheduled: 1573819001046
...
1573806051616 : my.package.name
dreamlte:/ $ bmgr restore 1573806051616 my.package.name
No matching restore set token. Available sets:
35e84268c94b7d9c : SM-G950F
3a8e32898034f8af : SM-G950F
3e2610c4ea45fb96 : Nexus 5X
done
dreamlte:/ $ bmgr restore 35e84268c94b7d9c my.package.name
Scheduling restore: SM-G950F
restoreStarting: 1 packages
onUpdate: 0 = my.package.name
restoreFinished: 0
done
- Supprimer l'application
- Réinstallez l'application et vérifiez si les valeurs SharedPreferences sont toujours là.
- Les valeurs ont disparu ...
Le comportement semble également différer sur les appareils Samsung avec Samsung Cloud, mais pour l'instant concentrons-nous sur le stock Android.
MISE À JOUR:
Cela ne fonctionnait plus car j'ai rétrogradé la version dans build.gradle:
build.gradle:
versionCode 70
versionName "1.6.1"
Même avec android:restoreAnyVersion="true"
le, AndroidManifest
cela ne fonctionnerait que lorsque la version n'était pas rétrogradée.