Seções iMasters
Android + Desenvolvimento + Mobile

Faça seus usuários felizes, (por favor) use o BackupManager

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

Existe algo mais frustrante para um usuário do que perder todas 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 cloud, através do BackupManager.

Usando o BackupManager, você pode fazer backup na cloud 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:

  • Primeiro você precisa registrar uma chave de acesso (API Key) em http://code.google.com/android/backup/signup.html
  • Depois precisamos criar uma Classe que estende a BackupAgentHelper:
    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 de que você está querendo fazer backup (no nosso exemplo “displayprefs” e “highscores”), você precisa chamar dataChanged() em uma instância de BackupManager:
    BackupManager backupManager = new BackupManager(context);
    ...
    backupManager.dataChanged();

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

Disponibilizei um projeto exemplo no github em BackupManagerTest

Então, se você é um desenvolvedor, faça seus usuários felizes. Se você é um usuário, reclame com os desenvolvedores (para isso que servem os ratings no Android Market, só não se esqueça de atualizar o rating depois que o desenvolvedor melhorar o aplicativo).

Até a próxima.

Mensagem do anunciante:

Torne-se um Parceiro de Software Intel®. Filie-se ao Intel® Developer Zone. Intel®Developer Zone

Comente também

1 Comentário

César Augusto

Certo. Já li sobre este Agent. Mas no meu caso, estou desenvolvendo uma aplicação que envolve dados financeiros. Há como eu fazer um backup do SQL liste e demais configurações para o cartão de memória ou pasta. SEM usar o cloud?
Se puder me ajudar ficarei grato.

Qual a sua opinião?