Резервное копирование общих настроек Android в службу резервного копирования Google не работает - PullRequest
2 голосов
/ 06 августа 2011

Я исследовал и проследил, как заставить мое приложение для Android выполнять резервное копирование данных в резервную копию Google, чтобы в случае потери пользователем телефона или обновления на новый телефон они не потеряли свои данные. Однако, когда я тестирую его (используя само приложение, затем удаляя и переустанавливая), никакие данные не восстанавливаются. Вот что я сделал. Возможно, кто-то может понять, что не так.

  1. Подал заявку на резервный ключ от Google
  2. Поместил следующий код в файл манифеста (вместо ключа я добавил значение ключа, а для packageName я использовал имя пакета моего приложения)

    android:backupAgent="packageName.MyPrefsBackup">
    <meta-data android:name="com.google.android.backup.api_key" android:value="key" />    
    
  3. Создан класс MyPrefsBackup со следующим кодом. Имя файла разделяемой настройки, который я хочу сохранить, называется UserDB. Что касается PREFS_BACKIP_KEY, я просто назвал его префами. Из того, что я понимаю, это не тот ключ, который входит в файл манифеста.

Код:

package packageName;

import android.app.backup.BackupAgentHelper;

import android.app.backup.SharedPreferencesBackupHelper;

public class MyPrefsBackup extends BackupAgentHelper {

    // The name of the SharedPreferences file

    static final String PREFS = "UserDB";

    // A key to uniquely identify the set of backup data

    static final String PREFS_BACKUP_KEY = "prefs";

    // Allocate a helper and add it to the backup agent

  public  void onCreate() {

        SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS);
        addHelper(PREFS_BACKUP_KEY, helper);


    }
}
  1. Добавлено BackupManager mBackupManager = new BackupManager(this); в моем основном классе, где я вызываю менеджер резервного копирования на следующем шаге

  2. Наконец, в моей основной программе я вызываю backupHelper, когда данные изменяются следующей строкой:

    mBackupManager.dataChanged();
    

Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 06 августа 2011

попробуйте новый BackupManager (this) .dataChanged ()

0 голосов
/ 14 октября 2011

Если вы тестируете это из AVD - вам нужно включить резервное копирование - AVD по умолчанию отключены для резервного копирования. оболочка adb bmgr enable true

Затем вы можете отладить его, чтобы увидеть, вызывается ли onCreate после запуска adb shell bmgr run

...