Android 2.2中的BackupManager和BackupAgent

wct*_*097 1 android android-backup-service

我已经查看了文档和示例BackupRestore应用程序,并编写了我自己的测试应用程序实现android:backupAgent.我扩展了BackupAgent课程,因为我主要担心的是能够从数据库备份数据.我甚至无法使用此功能制作一个简单的概念验证应用程序.

为了使事情变得非常简单,我宣布android:backupAgentMyBackupAgent在清单.然后我创建了一个MyBackupAgent.java类,扩展BackupAgent.然后我为类中的onBackup()onRestore()方法创建了覆盖MyBackupAgent,就像在示例和文档中一样.我Log.i()在每个函数的最开头添加了一个调用,以便在调用函数时可以在LogCat中识别.同样,我在这两个方面都设置了断点.然后我继续实现我的代码来备份数据库.

我使用2.2w/Google API创建了一个模拟器图像,甚至在Accounts&Sync下添加了一个gmail帐户.运行adb命令以启用bmgr,备份应用程序,运行备份,卸载应用程序,重新安装应用程序等....我从来没有从Log.i()命令中的任何一个onBackup()onRestore()函数中获取日志文件中的消息.

我在我的Evo 4g上再次尝试2.2.结果相同.备份管理器似乎没有在类中调用onBackup()onRestore()函数MyBackupAgent.

我在日志中得到的唯一奇怪信息是来自BackupManagerService"备份传递但e = true p = false",我相信在响应ADB命令备份应用程序时.

有什么建议?我错误地认为和函数中的Log.i()语句会出现在LogCat中吗?onBackup()onRestore()

Jan*_*kel 5

输出Backup pass but e=true p=false表示备份管理器已启用(e=true)但未配置(p=false).

只有满足这两个条件时,它才会运行备份.因此,出于某种原因,在您的仿真器映像上没有配置备份管理器,在挖掘代码后我注意到它应该在启动期间自动配置(DefaultActivity)

I/ActivityManager(   73): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.sdksetup/.DefaultActivity } from pid 0
Run Code Online (Sandbox Code Playgroud)

我刚刚创建了一个新的模拟器图像,它在那里没有问题.