共享首选项的Android备份到Google备份服务无法正常工作

时间:2011-08-06 01:08:07

标签: android sharedpreferences android-backup-service

我已经研究并遵循了如何让我的Android应用程序备份数据到谷歌备份,所以如果用户丢失电话或升级到新手机,他们不会丢失他们的数据。但是,当我测试它(通过自己使用应用程序,然后卸载并重新安装)时,不会恢复任何数据。这就是我所做的。也许有人可以弄清楚出了什么问题。

  1. 申请了谷歌的备用密钥
  2. 在清单文件中放置以下代码(代替密钥,我添加了键值,对于packageName,我使用了我的应用程序包名称)

    android:backupAgent="packageName.MyPrefsBackup">
    <meta-data android:name="com.google.android.backup.api_key" android:value="key" />    
    
  3. 使用以下代码创建了类MyPrefsBackup。我要备份的共享首选项文件的名称称为UserDB。至于PREFS_BACKIP_KEY,我只称它为prefs。据我所知,这与清单文件中的密钥不同。

  4. 代码:

    package packageName;
    
    import android.app.backup.BackupAgentHelper;
    
    import android.app.backup.SharedPreferencesBackupHelper;
    
    public class MyPrefsBackup extends BackupAgentHelper {
    
        // The name of the SharedPreferences file
    
        static final String PREFS = "UserDB";
    
        // A key to uniquely identify the set of backup data
    
        static final String PREFS_BACKUP_KEY = "prefs";
    
        // Allocate a helper and add it to the backup agent
    
      public  void onCreate() {
    
            SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS);
            addHelper(PREFS_BACKUP_KEY, helper);
    
    
        }
    }
    
    1. 在我的主课程中添加了BackupManager mBackupManager = new BackupManager(this);,我将在下一步调用备份管理器

    2. 最后,在我的主程序中,当数据被以下行更改时,我调用backupHelper

      mBackupManager.dataChanged();
      
    3. 非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

尝试新的BackupManager(this).dataChanged()

答案 1 :(得分:0)

如果您要从AVD进行测试 - 您需要启用备份 - 默认情况下会禁用AVD备份。 adb shell bmgr enable true

然后你可以实际调试它以查看运行后是否调用了onCreate adb shell bmgr run