Android - Backup de dados

O Android permite que você faça backup dos dados do aplicativo para armazenamento remoto "na nuvem", a fim de fornecer um ponto de restauração para os dados e configurações do aplicativo. Você só pode fazer backup dos dados do seu aplicativo. Para acessar os dados de outros aplicativos, você precisa fazer o root em seu telefone.

Para fazer um aplicativo de backup de dados, você precisa registrar seu aplicativo no serviço de backup do Google. Isso foi explicado no exemplo. Após o registro, você deve especificar sua chave no 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 fornece BackUpAgentHelperclasse para lidar com todas as operações de backup de dados. Para usar esta classe, você deve estender sua classe com ela. Sua sintaxe é fornecida abaixo -

public class MyBackUpPlace extends BackupAgentHelper {
}

Os dados persistentes que você deseja fazer backup estão em um dos dois formatos. Pode ser SharedPrefrences ou File. O Android suporta os dois tipos de backup nas respectivas classes deSharedPreferencesBackupHelper e FileBackupHelper.

Para ser usado SharedPerefernceBackupHelper, você precisa instanciar seu objeto com o nome do seu arquivo sharedPerefernces. Sua sintaxe é fornecida abaixo -

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

A última coisa que você precisa fazer é chamar o método addHelper especificando a string da chave de backup e o objeto auxiliar. Sua sintaxe é fornecida abaixo -

addHelper(PREFS_BACKUP_KEY, helper);

O método addHelper adicionará automaticamente um auxiliar a um determinado subconjunto de dados à configuração do agente.

Além desses métodos, existem outros métodos definidos na classe BackupAgentHelper. Eles são definidos abaixo -

Sr. Não Método e descrição
1

onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)

Execute o processo de backup em cada um dos manipuladores configurados

2

onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState)

Execute o processo de restauração em cada um dos manipuladores configurados

Os métodos da classe SharedPreferencesBackUpHelper estão listados abaixo.

Sr. Não Método e descrição
1

performBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)

Faz backup dos grupos configurados de SharedPreferences

2

restoreEntity(BackupDataInputStream data)

Restaura uma entidade do fluxo de dados de restauração para seu armazenamento de arquivo de preferências compartilhado apropriado

Exemplo

O exemplo a seguir demonstra o uso da classe BackupAgentHelper para criar backup de seus dados de aplicativo.

Para experimentar este exemplo, você precisa executá-lo em um dispositivo real ou em um emulador.

Passos Descrição
1 Você usará o Android Studio para criar um aplicativo Android e nomeá-lo como Backup no pacote com.example.backup.
2 Registre seu aplicativo com o serviço de backup do Google.
3 Modifique o AndroidManifest para adicionar a respectiva chave necessária e outros componentes
4 Crie uma classe de agente de backup com o nome que você especificar em AndroidManifest.XML
5 Execute o aplicativo e verifique os resultados

Registre seu aplicativo Android com o serviço de backup do Google. Para fazer isso, visite este link . Você deve concordar com os termos de serviço e, em seguida, inserir o nome do pacote do aplicativo. É mostrado abaixo -

Em seguida, clique em Register with android backup service. Isso lhe daria sua chave, junto com o código do AndroidManifest para copiar. Basta copiar a chave. É mostrado abaixo -

Depois de copiar a chave, você precisa gravá-la em seu arquivo AndroidManifest.XML. Seu código é fornecido abaixo -

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

Aqui está o código da classe BackUpAgentHelper. O nome da classe deve ser o mesmo que você especificou na tag backupAgent em aplicativo em 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);
   }
}

Teste seu BackupAgent

Depois de implementar seu agente de backup, você pode testar a funcionalidade de backup e restauração com o seguinte procedimento, usando bmgr.

Instale seu aplicativo em uma imagem de sistema Android adequada.

Se estiver usando o emulador, crie e use um AVD com Android 2.2 (API de nível 8).

Se estiver usando um dispositivo, ele deve executar o Android 2.2 ou superior e ter o Google Play integrado.

Certifique-se de que o backup de dados esteja ativado

Se estiver usando o emulador, você pode ativar o backup com o seguinte comando nas ferramentas / caminho do SDK -

adb shell bmgr enable true

Se estiver usando um dispositivo, abra as Configurações do sistema, selecione Privacidade e ative Fazer backup dos meus dados e Restauração automática.

Executando backup

Para fins de teste, você também pode fazer uma solicitação com o seguinte comando bmgr -

adb shell bmgr backup your.package.name

Inicie uma operação de backup digitando o seguinte comando.

adb shell bmgr run

Isso força o gerenciador de backup a executar todas as solicitações de backup que estão em sua fila.

Desinstale e reinstale seu aplicativo

Desinstale o aplicativo com o seguinte comando -

adb uninstall your.package.name

Em seguida, reinstale o aplicativo e verifique os resultados.