Autore Topic: Backup e Restore con BackupAgentHelper  (Letto 309 volte)

iClaude

  • Visitatore
Backup e Restore con BackupAgentHelper
« il: 27 Giugno 2014, 18:30:52 CEST »
0
Edit: quesito modificato.

Sto cercando di implementare il backup/restore del file delle preferenze e di un piccolo database usando BackupAgentHelper, come descritto nella guida ufficiale.
Per testare che tutto sia a posto uso il comando bmgr, come spiegato qua: bmgr | Android Developers

Il backup/restore del file delle preferenze funziona. Quello del database no: nel Logcat ottengo un msg di errore del tipo: SKIP_PADDING_FAILED AT LINE 332

Allego il codice:

Codice (Java): [Seleziona]
import static com.flingsoftware.personalbudget.database.DatabaseOpenHelper.sDataLock;

import android.app.backup.BackupAgentHelper;
import android.app.backup.SharedPreferencesBackupHelper;
import android.app.backup.FileBackupHelper;
import android.os.ParcelFileDescriptor;
import android.app.backup.BackupDataOutput;
import android.app.backup.BackupDataInput;
import android.util.Log;

import java.io.IOException;

import com.flingsoftware.personalbudget.database.DatabaseOpenHelper;


public class MyBackupAgent extends BackupAgentHelper {
        //costanti
        public final String FILE_PREFERENZE = "com.flingsoftware.personalbudget_preferences";
        public static final String CHIAVE_BACKUP_PREF = "prefBackup";
        public static final String CHIAVE_BACKUP_DATABASE = "databaseBackup";
       
       
        @Override
        public void onCreate() {
                super.onCreate();
               
                String FILE_DATABASE = this.getFilesDir().getParentFile().getPath()+ "/databases/" + DatabaseOpenHelper.NOME_DATABASE;
               
                SharedPreferencesBackupHelper sharedPreferencesBackupHelper = new SharedPreferencesBackupHelper(this, FILE_PREFERENZE);
                addHelper(CHIAVE_BACKUP_PREF, sharedPreferencesBackupHelper);
               
                FileBackupHelper helper = new FileBackupHelper(this, FILE_DATABASE);
        addHelper(CHIAVE_BACKUP_DATABASE, helper);
        }
       

        @Override
        public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) throws IOException {
            // Hold the lock while the FileBackupHelper performs backup
            synchronized (sDataLock) {
                super.onBackup(oldState, data, newState);      
            }
        }

       
        @Override
        public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) throws IOException {
            // Hold the lock while the FileBackupHelper restores the file
                synchronized (sDataLock) {
                super.onRestore(data, appVersionCode, newState);
           }
        }
}


Codice (XML): [Seleziona]
<application
       android:icon="@drawable/wallet"
       android:label="@string/app_name"
       android:theme="@style/AppTheme"
       android:uiOptions="splitActionBarWhenNarrow"
       android:debuggable="true"        
       android:allowBackup="true"
       android:backupAgent="com.flingsoftware.personalbudget.backup.MyBackupAgent">
       
        <meta-data android:name="com.google.android.backup.api_key" android:value="mia chiave"/>
« Ultima modifica: 27 Giugno 2014, 20:41:47 CEST da iClaude »