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.