我已经研究并遵循了如何让我的Android应用程序备份数据到谷歌备份,所以如果用户丢失电话或升级到新手机,他们不会丢失他们的数据。但是,当我测试它(通过自己使用应用程序,然后卸载并重新安装)时,不会恢复任何数据。这就是我所做的。也许有人可以弄清楚出了什么问题。
在清单文件中放置以下代码(代替密钥,我添加了键值,对于packageName,我使用了我的应用程序包名称)
android:backupAgent="packageName.MyPrefsBackup">
<meta-data android:name="com.google.android.backup.api_key" android:value="key" />
使用以下代码创建了类MyPrefsBackup
。我要备份的共享首选项文件的名称称为UserDB。至于PREFS_BACKIP_KEY
,我只称它为prefs。据我所知,这与清单文件中的密钥不同。
代码:
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);
}
}
在我的主课程中添加了BackupManager mBackupManager = new BackupManager(this);
,我将在下一步调用备份管理器
最后,在我的主程序中,当数据被以下行更改时,我调用backupHelper
:
mBackupManager.dataChanged();
非常感谢任何帮助。
答案 0 :(得分:1)
尝试新的BackupManager(this).dataChanged()
答案 1 :(得分:0)
如果您要从AVD进行测试 - 您需要启用备份 - 默认情况下会禁用AVD备份。 adb shell bmgr enable true
然后你可以实际调试它以查看运行后是否调用了onCreate adb shell bmgr run