onRestore não invocado para o meu BackupAgent personalizado

Existem alguns dados no meu aplicativo Android que eu gostaria de fazer backup e restauração. Para esse efeito, criei uma implementação personalizada deBackupAgent.

No meu manifesto incluímos o agente de backup, como você pode ver abaixo

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="auto"
    package="com.myapp"
    android:versionCode="14"
    android:versionName="1.13" >

    <application
        android:backupAgent="com.myapp.MyBackupAgent">

        <meta-data
            android:name="com.google.android.backup.api_key"
            android:value="my key" />

Incluí a chave api do serviço de backup, embora esteja testando com o emulador (Android 2.2) e não seja necessário, porque ele usa o transporte de backup loca

Para fazer o teste do backup e restauração, fiz o seguinte:

Inicie o emulador com meu aplicativo instalad

Ativar backup

adb shell bmgr enable true

Chame a parte do meu código onde o método dataChanged na classe BackupManager é chamad

Inicie manualmente a operação de backup

adb shell bmgr run

Verificado no log que o método onBackup do meu BackupAgent personalizado foi chamad

Desinstale o aplicativoReinstale o aplicativo Verifique o log se o método onRestore for chamad

O problema é que o método onRestore não parece ser chamado e não sei por que. Depois de reinstalar o aplicativo ou acionar manualmente a restauração com adb, vejo o seguinte no consol

$adb shell bmgr restore com.myapp
restoreStarting: 2 packages
restoreFinished: 0
done

e esse outro no log

D/AndroidRuntime( 8259):
D/AndroidRuntime( 8259): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime( 8259): CheckJNI is ON
D/AndroidRuntime( 8259): --- registering native functions ---
D/BackupManagerService(   59): MSG_RUN_RESTORE observer=android.app.backup.IRestoreObserver$Stub$Proxy@450e16a8
V/LocalTransport(   59): start restore 1
V/LocalTransport(   59):   nextRestorePackage() = @pm@
V/LocalTransport(   59):   getRestoreData() found 7 key files
V/LocalTransport(   59):     ... key=com.android.providers.settings size=1208
V/LocalTransport(   59):     ... key=com.myapp size=501
V/LocalTransport(   59):     ... key=android size=1208
V/LocalTransport(   59):     ... key=com.android.providers.userdictionary size=1208
V/LocalTransport(   59):     ... key=com.android.browser size=1208
V/LocalTransport(   59):     ... key=com.android.inputmethod.latin size=1208
V/LocalTransport(   59):     ... key=@meta@ size=11
V/LocalTransport(   59):   no more packages to restore
V/LocalTransport(   59): finishRestore()
V/LocalTransport(   59): finishRestore()
D/AndroidRuntime( 8259): Shutting down VM

mas não vejo que a chamada para onRestore seja realmente feita (eu tenho algumas instruções de registro logo no iníci

Isso já aconteceu com você? Existe alguma razão para o método onRestore não ser chamado, mesmo noonBackup foi chamado

questionAnswers(4)

yourAnswerToTheQuestion