1

我正在尝试将我的应用程序数据备份到 Google 服务器中。

为此,我BackupAgent在我的代码中实现了一个,并将其包含在 Android 清单文件和“元数据”中(在使用Android 备份服务注册我的应用程序包后得到)

当我运行应用程序进行备份时,这并没有执行备份。我使用的是 Nexus 一个设备(也连接到 WIFI)。

谁能告诉我为什么它没有调用我的 BackupAgent 的onBackup()方法?

我是否遗漏了一些东西,包括在 Android 清单文件中或程序中的某个位置?


以下是我的清单文件..

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="org.simpledatabackup"
      android:versionCode="1"
      android:versionName="1.0">

    <application android:icon="@drawable/icon" android:label="@string/app_name"
                 android:backupAgent="MyBackupAgent"
                 android:debuggable="true">


        <activity android:name=".SimpleDatabackup"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

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

    </application>

    <uses-sdk android:minSdkVersion="8" />

</manifest> 

源文件是

public class SimpleDatabackup extends Activity {

    private SharedPreferences myPrefs ;         // Shared Preferences

    BackupManager mBackupManager;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myPrefs = this.getSharedPreferences("shared_prefs", MODE_WORLD_READABLE);

        SharedPreferences.Editor edit = myPrefs.edit();
        edit.putString("firstname", "uday") ;
        edit.putString("lastname", "kiran") ;
        edit.commit() ;

        mBackupManager.dataChanged();   



    }
}

我的备份代理是这样的:我没有实现里面的功能是onBackup()和onRestore()。一旦被调用,我将实现我想要的..

public class MyBackupAgent extends BackupAgent {

@Override
public void onCreate() {

    System.out.println("In MyBackuAgent's onCreate() method");

}

@Override
public void onBackup(ParcelFileDescriptor arg0, BackupDataOutput arg1,
        ParcelFileDescriptor arg2) throws IOException {

    System.out.println("In MyBackuAgent's onBackup()");
    // TODO Auto-generated method stub

}

@Override
public void onRestore(BackupDataInput data, int appVersionCode,
        ParcelFileDescriptor newState) throws IOException {

}

}
4

1 回答 1

4

在清单中的应用程序标签中包含

android:allowBackup="true" 
android:restoreAnyVersion="true" 
android:backupAgent="<package>.MyBackupAgent"

请按照“测试您的 BackupAgent”部分立即调用备份进行测试。

BackupManagerService 在 datachanged 调用 backupmanager 后每隔一小时定期安排备份。[grep代码]

于 2011-09-01T07:26:10.850 回答