Я исследовал и проследил, как заставить мое приложение для Android выполнять резервное копирование данных в резервную копию Google, чтобы в случае потери пользователем телефона или обновления на новый телефон они не потеряли свои данные. Однако, когда я тестирую его (используя само приложение, затем удаляя и переустанавливая), никакие данные не восстанавливаются. Вот что я сделал. Возможно, кто-то может понять, что не так.
- Подал заявку на резервный ключ от Google
Поместил следующий код в файл манифеста (вместо ключа я добавил значение ключа, а для packageName я использовал имя пакета моего приложения)
android:backupAgent="packageName.MyPrefsBackup">
<meta-data android:name="com.google.android.backup.api_key" android:value="key" />
Создан класс 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);
}
}
Добавлено BackupManager mBackupManager = new BackupManager(this);
в моем основном классе, где я вызываю менеджер резервного копирования на следующем шаге
Наконец, в моей основной программе я вызываю backupHelper
, когда данные изменяются следующей строкой:
mBackupManager.dataChanged();
Любая помощь очень ценится.