BackupAgent - 无法还原包

时间:2016-02-19 16:08:54

标签: android backup android-backup-service

我有一个旧的应用程序,我一直在通过添加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设备时,不仅是我的应用程序出现此错误。

1 个答案:

答案 0 :(得分:0)

尝试将传输更改为:

adb shell bmgr transport android/com.android.internal.backup.LocalTransport

Google强加了备份限制,这可能就是为什么没有备份数据的原因。