更新:好的,10 个小时过去了,我在两台设备上再次运行相同的代码,令人惊讶的是,备份和恢复操作现在运行良好。今天对我来说一定是个好日子。
我用来重现备份和还原场景的过程:
1) 我在 Eclipse 中使用发布密钥导出了我的备份应用程序 APK。
2) 我卸载了我在 Desire S 和 Galaxy S2 上的备份应用程序。
3)我通过禁用和重新启用备份清除了两台设备上的所有备份数据。
4) 将 Desire S 连接到 USB 调试后,我通过“adb shell bmgr list sets”确认没有还原集存储在我的帐户中。
4) 我从 USB 断开 Desire S,在上面安装了我的备份应用程序。
5) 我运行备份应用程序,它调用 backupmanager.datachanged() 方法。
6)我用USB调试连接了Desire S,通过运行“adb shell bmgr run”强制备份操作开始。
7) 我确认使用“adb shell bmgr list sets”创建了一个还原集。
8) 我在 Galaxy S2 上安装了我的备份应用程序,在 Desire S 中创建的备份会自动恢复。
我将进一步测试以查看是否可以可靠地复制此过程,尤其是在我不强制执行备份操作时。
我正在编写一个简单的备份程序,可以在 Android 设备上备份和恢复一个小文件。我已经完成了几乎所有需要的事情(例如编写自定义 BackupAgent),并且备份和恢复操作在同一台设备上顺利运行。
但是,当我尝试跨两台设备执行备份和恢复时,即在一台设备上备份并在另一台设备上恢复时,恢复操作根本失败。它无法识别我创建的备份。然后我尝试在两个设备上备份和恢复相同的文件(但文件包含不同的内容)。我发现这两个设备独立备份和恢复。
我读过Android上的BackupManager服务旨在备份设备上的数据并在用户更改为另一台设备时恢复。这个过程显然涉及两个不同的设备。为什么备份和恢复功能不能跨两个设备工作?
我知道多个与我相似的问题,例如this和this。不幸的是,我不认为它们包含对我有用的答案。
我可以知道是否有人成功地创建了可以使用 Android BackupManager 服务在多个设备上备份和恢复的应用程序?
PS 供您参考,这两款设备是 HTC Desire S (Android 2.3.5) 和三星 Galaxy S2 i9100 (Android 4.1.2)。两者都运行最新的官方库存 ROM。当然,它们是使用同一个 Google 帐户激活的。
非常感谢。