Alright, so I'm trying to implement Data Backup into my application, and have been following this guide. I've implemented my BackupAgentHelper
using a SharedPreferencesBackupHelper
. I don't get any errors, and I'm being sure to call dataChanged()
after all preference changes, but when I test the backup (`adb shell bmgr run) I get this information in LogCat:
07-07 12:29:00.258: V/BackupManagerService(291): Scheduling immediate backup pass 07-07 12:29:00.258: V/BackupManagerService(291): Running a backup pass 07-07 12:29:00.258: V/BackupManagerService(291): clearing pending backups 07-07 12:29:00.258: V/PerformBackupTask(291): Beginning backup of 1 targets 07-07 12:29:00.289: V/BackupServiceBinder(291): doBackup() invoked 07-07 12:29:00.289: D/PerformBackupTask(291): invokeAgentForBackup on @pm@ 07-07 12:29:00.297: I/PerformBackupTask(291): no backup data written; not calling transport
So for reference, in my manifest I've added:
<application android:allowBackup="true" android:backupAgent="com.kcoppock.sudoku.SudokuBackupAgent"
as well as
<meta-data android:name="com.google.android.backup.api_key" android:value="my_key_goes_here" />
and my BackupAgentHelper is implemented like so:
public class SudokuBackupAgent extends BackupAgentHelper { static final String SCORES = "SCORES"; static final String BACKUP_ID = "sudoku_backup"; @Override public void onCreate() { SharedPreferencesBackupHelper backupHelper = new SharedPreferencesBackupHelper(this, SCORES); addHelper(BACKUP_ID, backupHelper); } }
and finally, in my main activity, I call for a data backup like this:
edit.putString(id + "_values", valueCache.toString()); edit.putString(id + "_hints", hintCache.toString()); edit.commit(); BackupManager backup = new BackupManager(this); backup.dataChanged();
I've tried debugging, and it seems my onCreate()
in SudokuBackupAgent
is never called. Or at least it's never reached from the debugger. It seems it isn't finding any updated data, and I have double checked to ENSURE there is data to be backed up. Is there something I'm missing here?
EDIT: I should add, I'm testing on a device (Galaxy Nexus), and I've even tried using an exported release APK for testing purposes.
1) Put Log.i() into your onCreate, to see if it's called.
2) Logcat indicates that your function didn't write anything. Check if you have shared_prefs/SCORES file in your app's private folder (assumes using appropriate file manager on rooted device). This is the file you're attempting to have in backup. Probably your preferences file is something else than this file, in such case fix your String SCORES to reflect real preferences file.
3) I tried to debug BackupAgentHelper.onCreate in my app, and it can be debugged after invoking adb shell bmgt... so it is possible to step here in debugger.
I had the same problem today with Android SDK 4.1. Using 2.3.3 versions, however, helped:
07-15 13:59:56.459: V/LocalTransport(61): performBackup() pkg=com........ 07-15 13:59:56.469: V/LocalTransport(61): Got change set key=filehelper:../databases/database.db size=8208 key64=ZmlsZWhlbHBlcjouLi8kYXRhYmFzZXMvZXhwZW5zZXIuZGI= 07-15 13:59:56.469: V/LocalTransport(61): data size 8208 07-15 13:59:56.469: V/LocalTransport(61): finishBackup()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With