1

MyBackupAgentHelper.java

public class MyBackupAgentHelper extends BackupAgentHelper {

private static final String MESSAGE_DB_FILE_BACKUP_KEY = "MESSAGE_DB_FILE_BACKUP_KEY";
private static final String DEFAULT_SHARED_PREFRERNCES_KEY = "DEFAULT_SHARED_PREFRERNCES_KEY";

@Override
public void onCreate() {
    super.onCreate();

    LogUtil.pd();

    File file = MessageDao.getSingleton(this).getSQLite().getFile();
    if (file == null) {
        LogUtil.w("Messsage DB File is NULL !");
    } else {
        LogUtil.i("Messsage DB File: "+file.getAbsolutePath());
        FileBackupHelper backupHelper = new FileBackupHelper(this, file.getName());
        addHelper(MESSAGE_DB_FILE_BACKUP_KEY, backupHelper);
    }

    String prefName = getDefaultSharedPreferencesName(this); // It return "my.package.name_preferences"
    LogUtil.i("Default Shared Preferences Name: "+prefName);
    SharedPreferencesBackupHelper backupHelper = new SharedPreferencesBackupHelper(this, prefName);
    addHelper(DEFAULT_SHARED_PREFRERNCES_KEY, backupHelper);
}

丸太の猫

03-26 10:11:02.361: I/MyPackage(3540): Messsage DB File: /data/data/my.package.name/files/db.sqlite
03-26 10:11:02.361: I/MyPackage(3540): Default Shared Preferences Name: my.package.name_preferences

データ ディレクトリ ファイル ツリー (data/data/my.package.name)

03-26 10:09:22.291: I/MyPackage(3540): my.package.name
03-26 10:09:22.291: I/MyPackage(3540): -shared_prefs
03-26 10:09:22.291: I/MyPackage(3540): --my.package.name_preferences.xml
03-26 10:09:22.291: I/MyPackage(3540): -files
03-26 10:09:22.291: I/MyPackage(3540): --db.sqlite
03-26 10:09:22.291: I/MyPackage(3540): -lib

そして、adbシェルを介して強制的にバックアップし、アプリを削除して、アプリを再インストールしました.

db.sqliteファイルのバックアップと復元を確認しました(正常に動作します。)

ただし、デフォルトの SharedPreferences は復元またはバックアップされません。

デフォルトの SharedPreferences をバックアップおよび復元するにはどうすればよいですか?

4

1 に答える 1

-1

SharedPreference の権限を少なくとも MODE_WORLD_READABLE に設定する必要があります。デフォルトでは、MODE_PRIVATE で作成されます。

クリックして、 developer.android.comで SharedPreference モードの API ドキュメントを参照してください。

MODE_PRIVATE でない場合は、adb backup コマンドを使用して SharedPreference をバックアップできます。

于 2014-04-02T19:02:02.210 に答える