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.