Android - Backup dei dati

Android consente di eseguire il backup dei dati dell'applicazione su un archivio "cloud" remoto, al fine di fornire un punto di ripristino per i dati e le impostazioni dell'applicazione. Puoi solo eseguire il backup dei dati dell'applicazione. Per accedere ai dati delle altre applicazioni, è necessario eseguire il root del telefono.

Per creare un'applicazione di backup dei dati, è necessario registrare l'applicazione con il servizio di backup di Google. Questo è stato spiegato nell'esempio. Dopo la registrazione, devi specificare la sua chiave in 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 fornisce BackUpAgentHelperclass per gestire tutte le operazioni di backup dei dati. Per utilizzare questa classe, devi estendere la tua classe con essa. La sua sintassi è data di seguito:

public class MyBackUpPlace extends BackupAgentHelper {
}

I dati persistenti di cui si desidera eseguire il backup si trovano in una delle due forme. O potrebbe essere SharedPrefrences o potrebbe essere File. Android supporta entrambi i tipi di backup nelle rispettive classi diSharedPreferencesBackupHelper e FileBackupHelper.

Per poter utilizzare SharedPerefernceBackupHelper, è necessario creare un'istanza del suo oggetto con il nome del file sharedPerefernces. La sua sintassi è data di seguito:

static final String File_Name_Of_Prefrences = "myPrefrences";
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, File_Name_Of_Prefrences);

L'ultima cosa che devi fare è chiamare il metodo addHelper specificando la stringa della chiave di backup e l'oggetto helper. La sua sintassi è data di seguito:

addHelper(PREFS_BACKUP_KEY, helper);

Il metodo addHelper aggiungerà automaticamente un helper a un dato sottoinsieme di dati alla configurazione dell'agente.

Oltre a questi metodi, esistono altri metodi definiti nella classe BackupAgentHelper. Sono definiti di seguito:

Suor n Metodo e descrizione
1

onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)

Eseguire il processo di backup su ciascuno dei gestori configurati

2

onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState)

Eseguire il processo di ripristino su ciascuno dei gestori configurati

I metodi della classe SharedPreferencesBackUpHelper sono elencati di seguito.

Suor n Metodo e descrizione
1

performBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)

Esegue il backup dei gruppi SharedPreferences configurati

2

restoreEntity(BackupDataInputStream data)

Ripristina un'entità dal flusso di dati di ripristino al relativo archivio di file delle preferenze condivise appropriato

Esempio

L'esempio seguente mostra l'utilizzo della classe BackupAgentHelper per creare il backup dei dati dell'applicazione.

Per sperimentare questo esempio, è necessario eseguirlo su un dispositivo reale o in un emulatore.

Passi Descrizione
1 Utilizzerai Android Studio per creare un'applicazione Android e chiamarla Backup in un pacchetto com.example.backup.
2 Registra la tua applicazione con il servizio di backup di Google.
3 Modificare l'AndroidManifest per aggiungere la rispettiva chiave necessaria e altri componenti
4 Crea la classe dell'agente di backup con il nome specificato in AndroidManifest.XML
5 Eseguire l'applicazione e verificare i risultati

Registra la tua applicazione Android con il servizio di backup di Google. Per farlo, visita questo link . È necessario accettare i termini di servizio e quindi immettere il nome del pacchetto dell'applicazione. È mostrato di seguito -

Quindi fare clic su Registrati con il servizio di backup Android. Ti darebbe la tua chiave, insieme al tuo codice AndroidManifest da copiare. Basta copiare la chiave. È mostrato di seguito -

Dopo aver copiato la chiave, è necessario scriverla nel file AndroidManifest.XML. Il suo codice è dato di seguito -

<?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>

Ecco il codice della classe BackUpAgentHelper. Il nome della classe dovrebbe essere lo stesso specificato nel tag backupAgent sotto application in 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);
   }
}

Prova il tuo BackupAgent

Dopo aver implementato l'agente di backup, è possibile testare la funzionalità di backup e ripristino con la seguente procedura, utilizzando bmgr.

Installa la tua applicazione su un'immagine di sistema Android adatta.

Se si utilizza l'emulatore, creare e utilizzare un AVD con Android 2.2 (livello API 8).

Se si utilizza un dispositivo, il dispositivo deve eseguire Android 2.2 o versioni successive e disporre di Google Play integrato.

Assicurati che il backup dei dati sia abilitato

Se si utilizza l'emulatore, è possibile abilitare il backup con il seguente comando dagli strumenti / percorso dell'SDK:

adb shell bmgr enable true

Se si utilizza un dispositivo, aprire le Impostazioni di sistema, selezionare Privacy, quindi abilitare Backup dei miei dati e Ripristino automatico.

Eseguire il backup

A scopo di test, puoi anche fare una richiesta con il seguente comando bmgr:

adb shell bmgr backup your.package.name

Avviare un'operazione di backup digitando il seguente comando.

adb shell bmgr run

Ciò impone a Gestione backup di eseguire tutte le richieste di backup presenti nella sua coda.

Disinstalla e reinstalla la tua applicazione

Disinstallare l'applicazione con il seguente comando:

adb uninstall your.package.name

Quindi reinstallare l'applicazione e verificare i risultati.