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」を実行します
現在、値 (タイムスタンプ) はクラウドから復元されません。新しいものが生成されます。
私のエラーはどこですか??