【发布时间】:2016-02-19 16:08:53
【问题描述】:
我有一个旧应用程序,我一直在通过添加 android 备份服务进行更新。我使用 BackupAgent 从我的 SQLite 数据库中的表中获取内容并将其写入 JSON 文件,然后上传。我在编码时使用了http://developer.android.com/guide/topics/data/backup.html 作为参考。
它在我运行 Android 6.0 Marshmallow 的 Nexus 5 上运行良好。 onBackup 在它应该调用的时候被调用,onRestore 也是如此。当我在运行 Lollipop 的设备(以及可能是前 Lollipop 的设备)上尝试应用程序时,就会出现问题。
无法恢复包 com.zecave.petter.zeblocker
当我使用 bmgr 并且我正在使用 Lollipop 设备时,是控制台的输出。
LogCat 给了我这个信息:
02-19 15:59:07.892: E/RestoreSession(948): java.lang.NullPointerException: 尝试调用虚拟方法 'void com.google.android.gms.backup.d.r.a(android.content.Context) ' 在空对象引用上
有人知道为什么这适用于我的 Nexus 5 和 Marshmallow,但不适用于我尝试过的两台运行 Lollipop 的设备吗?上面的消息对我来说没有任何意义,因为我不是从代码调用恢复,而是从命令行调用。
清单的一部分:
android:allowBackup="true"
android:icon="@drawable/icon_lightgreen"
android:label="@string/app_name"
android:theme="@style/MyMaterialTheme"
android:restoreAnyVersion="true"
android:backupAgent="com.zecave.petter.zeblocker.tools.BlacklistBackupAgent" >
<meta-data android:name="com.google.android.backup.api_key" android:value="AEdPqrEAAAAINjrn1*..." />
我都试过了
android:backupAgent=".tools.BlacklistBackupAgent"
android:backupAgent=".BlacklistBackupAgent"
但结果相同。
编辑: 请参阅下面的评论以获取更多说明。显然,尝试在 Lollipop 设备上恢复时,不仅我的应用程序会出现此错误。
【问题讨论】:
-
这很奇怪。经过更多的投资后,不仅在尝试恢复我自己的应用程序时抛出异常,而且在我尝试过的所有应用程序中都会抛出异常。这发生在我自己的设备和运行 Lollipop 的其他重要设备上。应用数据同步已启用(我的意思是,我可以备份,但不能恢复)。带有 Marshmallow 的 Nexus 5 没有这个问题。
标签: android backup android-backup-service