【问题标题】:SharedPreferences Backup Not WorkingSharedPreferences 备份不起作用
【发布时间】:2014-04-03 03:02:02
【问题描述】:

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 shell 进行备份,删除了我的应用程序,然后重新安装了我的应用程序。

我检查了备份和恢复 db.sqlite 文件(它工作正常。)

但默认的 SharedPreferences 没有恢复或备份。

如何备份和恢复默认的 SharedPreferences?

【问题讨论】:

    标签: android sharedpreferences android-backup-service


    【解决方案1】:

    您需要将 SharedPreference 的权限设置为至少 MODE_WORLD_READABLE,默认情况下它是在 MODE_PRIVATE 中创建的。

    点击阅读developer.android.com上的 SharedPreference 模式的 API 文档!

    如果 SharedPreference 不是 MODE_PRIVATE,您可以使用 adb backup 命令备份。

    【讨论】:

    • MODE_PRIVATE 仍然允许使用备份 APIS 保存 sharedPreference
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 2016-10-11
    • 2013-09-05
    相关资源
    最近更新 更多