Android - kopia zapasowa danych
Android umożliwia tworzenie kopii zapasowych danych aplikacji w zdalnym magazynie „w chmurze” w celu zapewnienia punktu przywracania danych i ustawień aplikacji. Możesz wykonać kopię zapasową tylko danych aplikacji. Aby uzyskać dostęp do danych innych aplikacji, musisz zrootować telefon.
Aby utworzyć aplikację do tworzenia kopii zapasowych danych, musisz zarejestrować swoją aplikację w usłudze kopii zapasowych Google. Zostało to wyjaśnione w przykładzie. Po rejestracji musisz określić jego klucz w pliku AndroidManifest.XML
<application
android:allowBackup="true"
android:backupAgent="MyBackupPlace">
<meta-data
android:name="com.google.android.backup.api_key"
android:value="AEdPqrEAAAAIErlxFByGgNz2ywBeQb6TsmLpp5Ksh1PW-ZSexg" />
</application>
Android zapewnia BackUpAgentHelperklasa do obsługi wszystkich operacji tworzenia kopii zapasowych danych. Aby korzystać z tej klasy, musisz rozszerzyć o nią swoją klasę. Jego składnia jest podana poniżej -
public class MyBackUpPlace extends BackupAgentHelper {
}
Trwałe dane, których kopię zapasową chcesz utworzyć, mają jedną z dwóch form. Albo może to być SharedPrefrences, albo plik. Android obsługuje oba typy kopii zapasowych w odpowiednich klasachSharedPreferencesBackupHelper i FileBackupHelper.
W celu wykorzystania SharedPerefernceBackupHelper, musisz utworzyć instancję obiektu z nazwą twojego pliku sharedPerefernces. Jego składnia jest podana poniżej -
static final String File_Name_Of_Prefrences = "myPrefrences";
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, File_Name_Of_Prefrences);
Ostatnią rzeczą, którą musisz zrobić, jest wywołanie metody addHelper, określając ciąg klucza zapasowego i obiekt pomocniczy. Jego składnia jest podana poniżej -
addHelper(PREFS_BACKUP_KEY, helper);
Metoda addHelper automatycznie doda pomocnika do danego podzbioru danych w konfiguracji agenta.
Oprócz tych metod istnieją inne metody zdefiniowane w klasie BackupAgentHelper. Są zdefiniowane poniżej -
Sr.No | Metoda i opis |
---|---|
1 | onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) Uruchom proces tworzenia kopii zapasowej na każdym ze skonfigurowanych programów obsługi |
2 | onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) Uruchom proces przywracania na każdym ze skonfigurowanych programów obsługi |
Poniżej przedstawiono metody klasy SharedPreferencesBackUpHelper.
Sr.No | Metoda i opis |
---|---|
1 | performBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) Tworzy kopie zapasowe skonfigurowanych grup SharedPreferences |
2 | restoreEntity(BackupDataInputStream data) Przywraca jedną jednostkę ze strumienia danych przywracania do odpowiedniego magazynu plików z preferencjami współdzielonymi |
Przykład
Poniższy przykład ilustruje użycie klasy BackupAgentHelper do tworzenia kopii zapasowych danych aplikacji.
Aby eksperymentować z tym przykładem, musisz uruchomić to na rzeczywistym urządzeniu lub w emulatorze.
Kroki | Opis |
---|---|
1 | Użyjesz Android Studio do stworzenia aplikacji na Androida i nazwania jej jako Backup w pakiecie com.example.backup. |
2 | Zarejestruj swoją aplikację w usłudze kopii zapasowych Google. |
3 | Zmodyfikuj plik AndroidManifest, aby dodać odpowiedni klucz i inne składniki |
4 | Utwórz klasę agenta kopii zapasowych o nazwie określonej w pliku AndroidManifest.XML |
5 | Uruchom aplikację i sprawdź wyniki |
Zarejestruj swoją aplikację na Androida w usłudze kopii zapasowych Google. Aby to zrobić, odwiedź ten link . Musisz zaakceptować warunki korzystania z usługi, a następnie wprowadzić nazwę pakietu aplikacji. Jest to pokazane poniżej -
Następnie kliknij Zarejestruj się w usłudze kopii zapasowej systemu Android. Dałoby ci to klucz wraz z kodem AndroidManifest do skopiowania. Po prostu skopiuj klucz. Jest to pokazane poniżej -
Po skopiowaniu klucza musisz zapisać go w pliku AndroidManifest.XML. Jego kod jest podany poniżej -
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.backup" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:backupAgent="MyBackUpPlace"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.backup.MainActivity"
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="AEdPqrEAAAAIErlxFByGgNz2ywBeQb6TsmLpp5Ksh1PW-ZSexg" />
</application>
</manifest>
Oto kod klasy BackUpAgentHelper. Nazwa klasy powinna być taka sama, jak określono w tagu backupAgent w aplikacji w AndroidManifest.XML
package com.example.backup;
import android.app.backup.BackupAgentHelper;
import android.app.backup.SharedPreferencesBackupHelper;
public class MyBackUpPlace extends BackupAgentHelper {
static final String File_Name_Of_Prefrences = "myPrefrences";
static final String PREFS_BACKUP_KEY = "backup";
@Override
public void onCreate() {
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this,
File_Name_Of_Prefrences);
addHelper(PREFS_BACKUP_KEY, helper);
}
}
Przetestuj BackupAgent
Po zaimplementowaniu agenta kopii zapasowych możesz przetestować funkcje tworzenia kopii zapasowych i przywracania za pomocą poniższej procedury, używając bmgr.
Zainstaluj aplikację na odpowiednim obrazie systemu Android.
Jeśli używasz emulatora, utwórz i używaj AVD z systemem Android 2.2 (poziom API 8).
Jeśli korzystasz z urządzenia, musi ono mieć system Android 2.2 lub nowszy i mieć wbudowaną usługę Google Play.
Upewnij się, że kopia zapasowa danych jest włączona
Jeśli używasz emulatora, możesz włączyć tworzenie kopii zapasowych za pomocą następującego polecenia z narzędzi / ścieżki zestawu SDK -
adb shell bmgr enable true
Jeśli korzystasz z urządzenia, otwórz Ustawienia systemowe, wybierz Prywatność, a następnie włącz Utwórz kopię zapasową moich danych i Automatyczne przywracanie.
Wykonywanie kopii zapasowej
Do celów testowych możesz również wysłać żądanie za pomocą następującego polecenia bmgr -
adb shell bmgr backup your.package.name
Zainicjuj operację tworzenia kopii zapasowej, wpisując następujące polecenie.
adb shell bmgr run
Zmusza to Menedżera kopii zapasowych do wykonywania wszystkich żądań kopii zapasowych, które znajdują się w jego kolejce.
Odinstaluj i ponownie zainstaluj aplikację
Odinstaluj aplikację za pomocą następującego polecenia -
adb uninstall your.package.name
Następnie zainstaluj ponownie aplikację i sprawdź wyniki.