Backup av preferences

Diskussion i 'Frågor, support och diskussion' startad av e7andy, 18 nov 2012.

  1. e7andy

    e7andy Professional Droid Hedersmedlem

    Blev medlem:
    14 okt 2009
    Inlägg:
    2 342
    Mottagna gillanden:
    821
    Telefon:
    Huawei P10 Plus

    MINA ENHETER

    Telefon:
    Huawei P10 Plus
    Telefon 2:
    Nexus 5
    Telefon 3:
    ADP1
    Övrigt:
    LG G Watch R, ChromeCast
    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
     
    Last edited: 18 nov 2012