Jag försöker nu lägga till backup av mina preferences så att om användaren avinstallerar och installerar på nytt eller byter device så kommer min app att läsa in sparade preferences.
Enligt tutorial på Android Developers så ska det vara jättelätt, men jag får det inte att funka.
Här är en tutorial m.m.:
http://developer.android.com/guide/topics/data/backup.html
Jag har registrerat API-nyckel för min app.
Det jag vill göra backup på är mina DefaultSharedPreferences, så det skiljer sig lite från vad de gör. Jag har även testat med "vanliga" sharedpreferences och det fungerar inte heller.
Del av AndroidManifest.xml:
HTML:
<application
android:name="se.nextsource.android.mantisdroid.MantisDroid"
android:backupAgent="se.nextsource.android.mantisdroid.MyBackupAgent"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.Light" >
<meta-data
android:name="com.google.android.backup.api_key"
android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />
MyBackupAgent.java:
Kod:
package se.nextsource.android.mantisdroid;
import android.app.backup.BackupAgentHelper;
import android.app.backup.SharedPreferencesBackupHelper;
public class MyBackupAgent extends BackupAgentHelper {
private static final String MY_PREFS_BACKUP_KEY = "myprefs";
private static final String PREFS = "_preferences";
public void onCreate() {
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, getApplicationContext().getPackageName() + PREFS);
addHelper(MY_PREFS_BACKUP_KEY, helper);
}
}
DefaultSharedPreferences har namnet package_preferences så därför läser jag ut paketnamnet med getPackageName().
Jag startar min app. Ser till att preferences uppdateras och dataChanged() anropas så att det finns data att spara.
Jag kör sen följande kommandon:
adb shell bmgr backup se.nextsource.android.mantisdroid
adb shell bmgr run
adb uninstall se.nextsource.android.mantisdroid
Det går att se att det finns data som är sparad med kommandot:
adb shell dumpsys backup
När jag sedan installerar appen på nytt så får jag följande meddelanden i LogCat:
Kod:
11-18 09:04:36.393: V/BackupManagerService(251): restoreAtInstall pkg=se.nextsource.android.mantisdroid token=3e
11-18 09:04:36.393: D/BackupManagerService(251): MSG_RUN_RESTORE observer=null
11-18 09:04:38.006: I/BackupManagerService(251): No restore data available
11-18 09:04:38.026: I/BackupManagerService(251): Restore complete.
11-18 09:04:43.823: D/BackupManagerService(251): Received broadcast Intent { act=android.intent.action.PACKAGE_ADDED dat=package:se.nextsource.android.mantisdroid flg=0x8000010 (has extras) }
11-18 09:04:44.049: V/BackupManagerService(251): addPackageParticipantsLocked: #1
11-18 09:04:44.049: I/BackupManagerService(251): New app se.nextsource.android.mantisdroid never backed up; scheduling
11-18 09:04:44.077: D/BackupManagerService(251): Now staging backup of se.nextsource.android.mantisdroid
Den hävdar alltså att det inte finns någon restore data så någonstans gör jag fel. Frågan är var.
Edit:
Jag har flest misstankar om att namngivningen på filen för DefaultSharedPreferences ställer till det...
Länk: http://stackoverflow.com/questions/...p-how-to-backup-defaultsharedpreferences?rq=1