我有一个旧的应用程序,我一直在通过添加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并且我正在使用棒棒糖设备时是控制台的输出。
LogCat给了我这样的信息:
02-19 15:59:07.892:E / RestoreSession(948):java.lang.NullPointerException:尝试调用虚方法'void com.google.android.gms.backup.dra(android.content.Context) '在空对象引用上
有人知道为什么这对我的带有Marshmallow的Nexus 5有效,但不是我试过的运行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设备时,不仅是我的应用程序出现此错误。
答案 0 :(得分:0)
尝试将传输更改为:
adb shell bmgr transport android/com.android.internal.backup.LocalTransport
Google强加了备份限制,这可能就是为什么没有备份数据的原因。