备份/恢复共享首选项android

时间:2017-06-22 18:19:59

标签: java android sharedpreferences android-backup-service

我正在尝试备份/恢复应用的共享偏好设置,我使用Android备份服务执行此步骤:

Manifest.xml代码中的<application>

<meta-data android:name="com.google.android.backup.api_key" android:value="My Key" />

添加了这个类:

public class MyBackupAgent extends BackupAgentHelper {

    // The name of the SharedPreferences file
    static final String PREFS = "my_preferences";


    @Override
    public void onCreate() {
        SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS);
        addHelper(Utilities.SETTINGS_KEY, helper);
    }

}

当设置值为共享首选项时,我这样做:

BackupManager backupManager = new BackupManager(context);
backupManager.dataChanged();

但如果我卸载/重新安装应用程序,则更改不适用...

4 个答案:

答案 0 :(得分:2)

我的猜测是你忘了添加

android:allowBackup="true"

AndroidManifest.xml 文件中的<application>标记内

答案 1 :(得分:2)

您必须分配一个帮助程序并将其添加到备份代理中,如下所示:

    @Override
public void onCreate() {
    FileBackupHelper helper = new FileBackupHelper(this,
            TOP_SCORES, PLAYER_STATS);
    addHelper(FILES_BACKUP_KEY, helper);
}

并考虑重写onBackup()和onRestore()方法。 见这里的解释: https://developer.android.com/guide/topics/data/keyvaluebackup.html#BackupAgentHelper

答案 2 :(得分:1)

当您致电dataChanged()时,您只是通知系统某些内容已更改,此时它不会启动备份,请给它一些时间和Wi-Fi连接。如果设置了“自动恢复”,请在“备份并重置”下检查设备的设置。

确保您使用保存的相同首选项(使用相同的密钥)context.getSharedPreferences("my_preferences", Context.MODE_PRIVATE);

答案 3 :(得分:0)

我假设您已设置了类似的内容(取决于android版本,甚至取决于设备)

  

“云和帐户”->“备份和还原”->“自动还原”

打开。