【发布时间】:2016-02-12 07:17:42
【问题描述】:
我已阅读 Google 说明以使用备份 api 备份数据。我编写了简单的测试program 来检查它是如何工作的(MainActivity + BackupAgent 用于共享偏好)。
在具有不同 API 的 AVD 模拟器上一切正常,但在真实设备上我无法在重新安装应用程序后取回数据。
我用不同的方式对其进行了测试:
- 来自backup data 的 Google 推荐
- adb shell bmgr 命令/等待 24 小时以上自动备份事件
- 传输 com.google.android.gms/.backup.BackupTransportService 和 android/com.android.internal.backup.LocalTransport
- 附加“bmgr restore”命令/附加调用 requestRestore()
- 使用 FileBackupHelper / SharedPreferencesBackupHelper
- 不同设备 Nexus4、Nexus7、Samsung Galaxy、Acer a501(每台设备都开启了所有“备份和重置”设置)
- 从 Android Studio 安装应用程序 / 从 sdcard 安装签名 apk / 我什至在 Google Play 上发布了我的应用程序并尝试从那里安装应用程序
- 使用 adb 卸载应用程序/从设备应用程序/擦除我的设备
在 logcat 中我可以看到我的包在系统备份列表中,并且调用了 BackupHelper.onCreate()。
03-14 18:29:14.716 16355-16355/com.jh.testmybackup D/BACKUP﹕ ThebackupAgent.onCreate()
03-14 18:29:14.716 16355-16367/com.jh.testmybackup V/BackupServiceBinder﹕ doBackup() invoked
03-14 18:29:14.716 16355-16367/com.jh.testmybackup D/BackupHelperDispatcher﹕ handling existing helper 'com.jh.testmybackup' android.app.backup.SharedPreferencesBackupHelper@41e1ad90
03-14 18:29:14.716 311-407/? D/PerformBackupTask﹕ starting agent for backup of BackupRequest{pkg=com.jh.testmybackup}
03-14 18:29:14.716 311-407/? D/BackupManagerService﹕ awaiting agent for ApplicationInfo{42c80f98 com.jh.testmybackup}
03-14 18:29:14.716 311-27709/? D/BackupManagerService﹕ agentConnected pkg=com.jh.testmybackup agent=android.os.BinderProxy@426b4240
03-14 18:29:14.716 311-407/? I/BackupManagerService﹕ got agent android.app.IBackupAgent$Stub$Proxy@42979528
03-14 18:29:14.716 311-407/? D/PerformBackupTask﹕ invokeAgentForBackup on com.jh.testmybackup
03-14 18:29:15.176 311-407/? I/PerformBackupTask﹕ Backup pass finished.
但没有任何帮助。 重新安装应用程序后,我无法取回我的数据。
毕竟,我试图找到有关此问题的一些信息,但没有找到任何解决方案。我发现了一些示例应用程序(stackoverflow.com/questions/12402749/examples-of-application-used-android-backup-services 没有链接声誉)并尝试将它们安装在我的设备上,但之后它们也没有恢复任何内容重新安装。
我觉得自己很愚蠢。只有我有这样的问题吗?
【问题讨论】:
-
您是否尝试在使用相同密钥签名的应用上进行备份?我认为(但不知道)为一个密钥存储的文件是用所述密钥加盐的,因此您不能交叉来自两个不同的密钥签名 apk 的数据。我不知道这是否是你在做的,但友好的提醒,就是这样。
-
@MeetTitan 我尝试对同一个 .apk 文件进行完整的测试周期(安装 - 设置首选项 - 调用 dataChanged - 运行 bmgr 命令 - 卸载 - 再次安装 - 尝试读取首选项)
-
你得到这个答案了吗?我已经实现了备份 API,我注意到它适用于模拟器和摩托罗拉设备,但不适用于三星设备......
标签: android android-backup-service