[Dica Dev] Faça seus usuários felizes, use o Backup Manager

Tsuharesu Luciel 13 de agosto, 2011 2

Post feito por Lúcio Maciel em seu blog pessoal. Disponibilizado por ele, gentilmente.

Acredito que o que todo desenvolvedor quer é que seus usuários sejam felizes para que continuem usando, ou melhor ainda, continuem comprando seus aplicativos.

Existe algo mais frustrante para um usuário do que perder todos as fases com 3 estrelinhas do seu joguinho preferido? Ou ter que preencher vários dados após uma nova instalação de um aplicativo que ele já usa, em seu novo e recém adquirido smartphone de última geração?

O Android provê uma funcionalidade muito simples para se fazer backup de configurações e preferências na Nuvem, através do BackupManager.

Usando o BackupManager você pode fazer backup na Nuvem de suas SharedPreferences ou de arquivos de configuração/informação simples (não use para arquivos binários grandes).

E o melhor de tudo, ele é muito simples de usar:

import android.app.backup.BackupAgentHelper;
import android.app.backup.SharedPreferencesBackupHelper;

 public class MyBackupAgent extends BackupAgentHelper {
     // O nome dos grupos de SharedPreferences mantidas pela aplicação,
     // são as mesmas strings que você passa para o
     // getSharedPreferences(String, int).
     static final String PREFS_DISPLAY = "displayprefs";
     static final String PREFS_SCORES = "highscores";

     // Uma string arbitraria usada pelo BackupAgentHelper para
     // identificar os dados do SharedPreferenceBackupHelper
     static final String MY_PREFS_BACKUP_KEY = "myprefs";

     // Simplesmente aloca um helper e o instala...
     void onCreate() {
         SharedPreferencesBackupHelper helper =
                 new SharedPreferencesBackupHelper(this, PREFS_DISPLAY,
                                                         PREFS_SCORES);
         addHelper(MY_PREFS_BACKUP_KEY, helper);
     }
 }

No seu AndroidManifest.xml na tag <application> adicione

android:allowBackup="true"

para habilitar o backup e

android:backupAgent="MyBackupAgent"

para informar qual o seu BackupAgent.

Ainda na tag <application>, adicione:

 <meta-data android:name="com.google.android.backup.api_key" android:value="SUA API KEY" />

Cada vez que alterar algum dado nos grupos de SharedPreferences que você está querendo fazer backup (no nosso exemplo “displayprefs” e “highscores”) você precisa chamar dataChanged() em uma instancia de BackupManager:

BackupManager backupManager = new BackupManager(context);
...
backupManager.dataChanged();

Pronto, isso é tudo o que você precisa para fazer o backup e recuperação das configurações na Nuvem e principalmente manter os seus usuários felizes.

Código disponível em BackupManagerTest. BackupManager funciona em Android 2.2+.

Até a próxima.

  • Kayatt

    Vocês já testaram fazer isso rodando em um Android 2.1 também!? Estou preparando um Backward compatibility para tal, realmente tem me dado nos nervos…
    Ahh nos androids 2.2 lembrem-se de não chamar a funçao “cloudBackup.requestRestore”…
    Bug do Android…

  • Fabio

    Cara, muito obrigado por disponibilizar este tutorial. Mas tenho uma pequena dúvida, se eu quiser enviar um banco, pequeno, tipo sqlite? Como seria?