更新:好的,所以10个小时过去了,我在两台设备上再次运行相同的代码,令人惊讶的是现在备份和恢复操作运行正常。今天对我来说一定是个好日子。
我用来重现备份和恢复方案的过程:
1)我在Eclipse中使用发布密钥导出了备份应用APK
2)我在Desire S和Galaxy S2上卸载了我的备份应用程序
3)我通过禁用和重新启用备份来清除两台设备上的所有备份数据
4)当Desire S连接到USB调试时,我确认我的帐户中没有存储“adb shell bmgr list sets”的恢复集。
4)我将Desire S与USB断开连接,在其上安装了我的备份应用程序
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服务在多个设备上备份和恢复的应用程序?
P.S。有关您的信息,这两个设备是HTC Desire S(Android 2.3.5)和三星Galaxy S2 i9100(Android 4.1.2)。两者都运行最新的官方库存ROM。当然,它们是使用相同的Google帐户激活的。
非常感谢。