【问题标题】:Data Backup into Google Servers using Android Backup Service in Android使用 Android 中的 Android 备份服务将数据备份到 Google 服务器
【发布时间】:2010-11-18 16:09:31
【问题描述】:

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

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

当我运行应用程序进行备份时,这并没有执行备份。我使用的是 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 {

}

}

【问题讨论】:

  • 您能否显示您的 backupAgent 的 sn-ps 以及您添加到清单中的内容?您如何确定没有调用 onBackup?
  • 感谢玛雅拉的回复..

标签: android android-backup-service


【解决方案1】:

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

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

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

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

【讨论】:

  • +1 用于找出源代码并注意到一小时的延迟
猜你喜欢
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多