3

BackupAgent を動作させようとしていますが、動作させることができません。ここに私のサンプルコードがあります:

レイアウトは単なる TextView と Button です。

主な活動:

...     
public static final String PREF_NAME = "TestPref";
    private static final String TEST_KEY = "TEST";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final SharedPreferences pref = getApplicationContext()
            .getSharedPreferences(PREF_NAME, MODE_PRIVATE);

    if (pref.getString(TEST_KEY, "").length() == 0) {
        pref.edit().putString(TEST_KEY, "new Date())
                .commit();
        new BackupManager(getApplicationContext()).dataChanged();
    }

    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            TextView tv = (TextView) findViewById(R.id.textView1);
            if ("START_VALUE".equalsIgnoreCase(tv.getText().toString())) {
                tv.setText(pref.getString(TEST_KEY, ""));
            }
        }
    });
}

BackupHelper は、私がここで入手できるものです: http://developer.android.com/reference/android/app/backup/SharedPreferencesBackupHelper.html使用したもの で pref ファイルの名前を調整しました。

そして、私が追加したマニフェスト android:backupAgent="TheBackupAgent"(アプリケーションタグ)とバックアップメタデータで

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

とてもシンプルなアプリです。

私は今次のことをしています:

1)アプリ起動

2) Textview は xml ファイルで「START_VALUE」で初期化されているので、ボタンを押すと pref-value が表示されます

3) コンソールから「adb shell bmgr run」を実行して、バックアップをすぐに実行します

4) 「adb uninstall com.foo.backuptest」を実行します

5) 「adb install com.foo.backuptest」を実行します

現在、値 (タイムスタンプ) はクラウドから復元されません。新しいものが生成されます。

私のエラーはどこですか??

4

1 に答える 1

1

バックアップを有効にするには、マニフェスト ファイルにこれを含める必要があります。

android:allowBackup="true"
android:backupAgent="TheBackupAgent"

電話のバックアップ設定はどうですか?[データのバックアップ] と [自動復元] がオンになっていて、有効なバックアップ アカウントの電子メール ID を入力していることを確認してください。

Google がいつ、どのくらいの頻度でデータをバックアップするかを知るには、次のリンクをご覧ください: Android バックアップ サービス - いつ、どのくらいの頻度でバックアップしますか?

このテスターに​​よると (私も今バックアップ頻度テストを実行しました): https://advancedweb.hu/2014/12/09/practical_measurement_of_the_android_backup_manager/

バックアップ マネージャー サービスは、最後のデータ バックアップ要求から 1 時間の間に少なくとも 1 つの DataChanged() が呼び出されている限り、1 時間ごとに応答します (テストでもこれを証明しました)。

コマンド ラインで簡単にテストするには、次のコマンドを試してください。

データ バックアップが有効になっていることを確認するには: adb shell bmgr enable true

データのバックアップをリクエストするには: adb shell bmgr backup your.package.name

データのバックアップを開始するには: adb shell bmgr run

アプリをアンインストールするには: adb uninstall your.package.name

次に、アプリをインストールします: adb install your.package.name

于 2016-02-09T22:16:35.970 に答える