使用Android中的Android备份服务将数据备份到Google服务器中

时间:2010-11-18 16:09:32

标签: android android-backup-service

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

为此,我在我的代码中实现了BackupAgent,并将其包含在Android清单文件和“元数据”中(使用Android Backup Service注册了我的应用程序包后得到)< / p>

当我运行应用程序进行备份时,这不执行备份..我使用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 {

}

}

1 个答案:

答案 0 :(得分:4)

清单中的应用程序标记包括

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

请按照"Testing your BackupAgent"部分立即调用备份进行测试。

BackupManagerService在对backupmanager进行datachanged调用后的小时间隔内定期计划备份。 [grepcode]