2

我已经研究并遵循了如何让我的 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,我只是将其称为首选项。据我了解,这与清单文件中的密钥不同。

代码:

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();
    

任何帮助深表感谢。

4

2 回答 2

1

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

于 2011-08-06T04:12:05.480 回答
0

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

然后就可以实际调试了,看看在运行 adb shell bmgr run 之后是否调用了 onCreate

于 2011-10-14T16:54:51.427 回答