当我尝试备份数据时,BackupTransportService会引发异常

时间:2014-11-14 01:02:25

标签: android android-service adb android-backup-service

当我运行onBackup时,我的adb shell bmgr run似乎被调用了,但看起来像是PolicyException。有人知道这意味着什么或导致它的原因是什么?我在这里砰的一声。

更新:仅当我尝试使用BackupTransportService作为传输时才会发生这种情况。使用LocalTransport就好了。仍然需要帮助!

这是MyBackupAgent的代码

public class MyBackupAgent extends BackupAgentHelper {

    @Override
    public void onCreate(){
        Log.d("GradeTracker.MyBackupAgent", "onCreate called");

        FileBackupHelper myDb = new FileBackupHelper(this, "../databases/" + DBAdapter.DATABASE_NAME);
        addHelper(DBAdapter.DATABASE_NAME, myDb); 
    }

    @Override
    public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
         ParcelFileDescriptor newState) throws IOException {
        Log.d("GradeTracker.MyBackupAgent", "onBackup called");
            synchronized (DBAdapter.dbBackupLockObject) {
                    super.onBackup(oldState, data, newState);
            }
    }

    @Override
    public void onRestore(BackupDataInput data, int appVersionCode,
                    ParcelFileDescriptor newState) throws IOException {
            Log.d("GradeTracker.MyBackupAgent", "onRestore called");
            synchronized (DBAdapter.dbBackupLockObject) {
                    super.onRestore(data, appVersionCode, newState);
            }
    }
}

我的宣言......

<application
        android:allowBackup="true"
        android:backupAgent="MyBackupAgent" ...>
    <meta-data android:name="com.google.android.backup.api_key" 
            android:value="<myKey>" />     
</application>

堆栈跟踪

11-13 19:53:44.481: D/PerformBackupTask(352): starting agent for backup of BackupRequest{pkg=com.NsouthProductions.gradetrackerpro}
11-13 19:53:44.501: I/BackupManagerService(352): got agent android.app.IBackupAgent$Stub$Proxy@441b7118
11-13 19:53:44.501: D/PerformBackupTask(352): invokeAgentForBackup on com.NsouthProductions.gradetrackerpro
11-13 19:53:44.511: V/BackupServiceBinder(30648): doBackup() invoked
11-13 19:53:44.511: D/GradeTracker.MyBackupAgent(30648): onBackup called
11-13 19:53:44.511: D/BackupHelperDispatcher(30648): handling existing helper 'GradeTracker.db' android.app.backup.FileBackupHelper@425a93e0
11-13 19:53:45.382: E/BackupTransportService(352): com.google.android.backup.BackupRequestGenerator$PolicyException: server error in app com.NsouthProductions.gradetrackerpro: code 7
11-13 19:53:45.382: E/BackupTransportService(352):  at com.google.android.backup.BackupRequestGenerator.parseResponse(BackupRequestGenerator.java:360)
11-13 19:53:45.382: E/BackupTransportService(352):  at com.google.android.backup.BackupTransportService.sendRequestLocked(BackupTransportService.java:849)
11-13 19:53:45.382: E/BackupTransportService(352):  at com.google.android.backup.BackupTransportService.access$600(BackupTransportService.java:78)
11-13 19:53:45.382: E/BackupTransportService(352):  at com.google.android.backup.BackupTransportService$1.finishBackup(BackupTransportService.java:444)
11-13 19:53:45.382: E/BackupTransportService(352):  at com.android.server.BackupManagerService$PerformBackupTask.operationComplete(BackupManagerService.java:2320)
11-13 19:53:45.382: E/BackupTransportService(352):  at com.android.server.BackupManagerService$BackupHandler.handleMessage(BackupManagerService.java:572)
11-13 19:53:45.552: I/PerformBackupTask(352): Backup pass finished.

1 个答案:

答案 0 :(得分:1)

解决了!我的Android备份服务密钥显然很糟糕。我的清单中的包名有几个大写字母,所以我想&#34;也许我应该确保我的密钥是使用相同大小写的包名生成的。&#34;所以我再次使用我的清单直接复制/粘贴了我的包名,然后我得到了一个不同的密钥,现在似乎正在运行。