java – 在Android中备份SharedPreferences?

前端之家收集整理的这篇文章主要介绍了java – 在Android中备份SharedPreferences?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想在SharedPreferences中备份一个值,以便我可以在重新安装后读出这个值.

我的代码不起作用,我不知道错误是什么.

MyBackupAgent

  1. package com.app.appname;
  2. import android.app.backup.BackupAgentHelper;
  3. import android.app.backup.BackupManager;
  4. import android.app.backup.SharedPreferencesBackupHelper;
  5. import android.content.Context;
  6. public class MyBackupAgent extends BackupAgentHelper{
  7. static final String PREFS_DISPLAY = "AppName";
  8. private Context context;
  9. static final String MY_PREFS_BACKUP_KEY = "keyToStore";
  10. public MyBackupAgent(Context context){
  11. this.context = context;
  12. SharedPreferencesBackupHelper helper =
  13. new SharedPreferencesBackupHelper(context,PREFS_DISPLAY);
  14. addHelper(MY_PREFS_BACKUP_KEY,helper);
  15. }
  16. public void storeData(){
  17. BackupManager backupManager = new BackupManager(context);
  18. backupManager.dataChanged();
  19. }
  20. }

我如何存储数据:

  1. ...
  2. SharedPreferences settings = getSharedPreferences("AppName",0);
  3. SharedPreferences.Editor editor = settings.edit();
  4. editor.putBoolean("keyToStore",true);
  5. editor.commit();
  6. new MyBackupAgent(this).storeData();
  7. ...

我如何收到数据:

  1. ...
  2. SharedPreferences settings = getSharedPreferences("AppName",0);
  3. boolean value = settings.getBoolean("keyToStore",false);
  4. ...

我还在Android Manifest中添加了API:

你知道我做错了什么以及它是如何工作的吗?它真的有效吗?

最佳答案
您的SharedPreferences备份代理类应该是这样的:

  1. public class MyPrefsBackupAgent extends BackupAgentHelper {
  2. // The name of the SharedPreferences file
  3. static final String PREFS = "user_preferences";
  4. // A key to uniquely identify the set of backup data
  5. static final String PREFS_BACKUP_KEY = "prefs";
  6. // Allocate a helper and add it to the backup agent
  7. @Override
  8. public void onCreate() {
  9. SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this,PREFS);
  10. addHelper(PREFS_BACKUP_KEY,helper);
  11. }
  12. }

然后,您必须使用以下内容请求云备份(它将完成异步):

  1. import android.app.backup.BackupManager;
  2. ...
  3. public void requestBackup() {
  4. BackupManager bm = new BackupManager(this);
  5. bm.dataChanged();
  6. }

并且您不需要手动还原SharedPreferences,因为它们由SharedPreferencesBackupHelper类自动管理.

除了备份API密钥之外,请不要忘记在清单中添加备份代理类:

有关这一切的更多信息,请参见http://developer.android.com/guide/topics/data/backup.htmlhttp://developer.android.com/training/cloudsync/backupapi.html

猜你在找的Android相关文章