|
Backup für Android Anwendungsdaten
Ein Beitrag von David Müller Anwendungen haben mit dem Android API 2.2 Froyo die Möglichkeit, ihre Daten „in der Cloud“, das heißt auf Googles Servern, zu speichern. In der API ist dafür das neue Package Die Backup API stellt für Anwendungen bereit, was bisher schon von Android intern genutzt wurde, um zum Beispiel bei einem Firmwareupgrade die Systemeinstellungen wiederherzustellen. Die API ist dafür gedacht, die Daten der Anwendung von einem Gerät zum anderen zu migrieren oder nach einer Neuinstallation wiederherzustellen. Die Frage „inkrementell oder differenziell?“ spielt folglich keine Rolle, es geht im Allgemeinen um Komplettbackups. Sicherung und Wiederherstellung werden zwar in bestimmten Situationen vom Betriebssystem in Gang gesetzt, die Details liegen jedoch in der Verantwortung der jeweiligen Anwendung. Im Folgenden wird gezeigt, wie die Backup API anzusprechen ist. VoraussetzungenErste Voraussetzung für die Nutzung der Backup API ist eine einfache Registrierung der Anwendung bei Google. Auf Basis des Package Name erhält man einen Registrierungsschlüssel, der in die Manifest-Datei wandert. Zweite Voraussetzung
ist die Ergänzung der Manifest-Datei um das <manifest ... package="de.androidbuch.amando" ...> <application android:label="Amando" android:backupAgent="DemoBackupAgent"> <activity ... > ... </activity> <meta-data android:name="com.google.android.backup.api_key" android:value="AEdPqrEAAAAItgF9i2_rbLH4b1-v0ffZxR2Zx_k8NtK51yQAdg" /> </application> </manifest> Berechtigungen
kommen nur ins Spiel, wenn eine Anwendung das Backup von anderen
Anwendungen lostreten will. Dazu benötigt man die Berechtigung Die letzte Voraussetzung betrifft die Umgebung, in der die Anwendung läuft: Im Gerät muß ein Google Account eingerichtet sein, und in den Systemeinstellungen "Privacy Settings" müssen "Back up my data" und "Automatic Restore" einen Haken haben. BackupAgent ImplementierenNun zur Implementierung: Im einfachen Fall leitet man die eigene Klasse von BackupAgentHelper ab. Für das Sichern der Standard-Anwendungseinstellungen reicht der folgende Quelltext: public class DemoBackupAgent extends BackupAgentHelper { // The name of the SharedPreferences file static final String PREFS = "my.package" + "_preferences"; // A key to uniquely identify the backup data part static final String DEF_PREFS_KEY = "default_prefs"; // Create the helper and add it to the backup agent public void onCreate() { SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS); addHelper(DEF_PREFS_KEY, helper); } } Weitere Einstellungsdateien können durch zusätzliche
public class DemoBackupAgent extends BackupAgentHelper { // the names of the files to backup static final String BOOKMARKS = "bookmarks"; static final String HISTORY = "history"; // A key to uniquely identify the backup data part static final String FILES_BACKUP_KEY = "savedFiles"; // Create the helper and add it to the backup agent public void onCreate() { FileBackupHelper helper = new FileBackupHelper(this, BOOKMARKS, HISTORY); addHelper(FILES_BACKUP_KEY, helper); } } Alles andere muß selbst implementiert werden, am besten als weitere
Unterklassen von BackupManager aufrufenNach einer zu sichernden Änderung gibt die Anwendung dem
BackupManager über den Aufruf von
Eine
Wiederherstellung erfolgt normalerweise automatisch bei
Neuinstallation der Anwendung. Eine Anwendung kann das im Prinzip aber auch
selbst anfordern, indem sie die Methode
Offensichtlich will Google sichergehen, dass die Backup API nicht für andere Zwecke mißbraucht wird... Steuerung über die adb shellZum Test kann der BackupManager direkt über die adb shell direkt angesprochen werden, um eine Wiederherstellung durchzuführen: adb shell bmgr restore <package_name> Ein sofortiges Backup ist über diesen Weg ebenfalls möglich: adb shell bmgr backup <package_name> adb shell bmgr run Über die Shell kann der Backup Manager schließlich direkt aktiviert werden, anstatt die oben gezeigten Einstellungen zu setzen: adb shell bmgr enable true FazitDieser Überblick sollte als Einstieg in die Backup API reichen. Ausführlicher - dafür auf Englisch - beschreibt ein Artikel in der API Dokumentation die Nutzung des Backup APIs. Im zugehörigen Beispielprojekt BackupRestore finden sich verschiedene BackupHelper-implementierungen. Wegen dem recht geringen Aufwand zur Einbindung der Backup API sollte zumindest die grundlegende Sicherung in keiner Anwendung fehlen! |

