diff options
author | Christopher Tate <ctate@google.com> | 2009-06-01 16:49:50 -0700 |
---|---|---|
committer | Christopher Tate <ctate@google.com> | 2009-06-01 16:49:50 -0700 |
commit | 93e7e22ec91dbc641d10ca6d70423e1357a95bba (patch) | |
tree | b14540bbc5176b7d1f3919a3646400063f9a6f4c /core | |
parent | ff0d91479d3c8523bc290bd1b65fcd2546be1d40 (diff) | |
download | frameworks_base-93e7e22ec91dbc641d10ca6d70423e1357a95bba.zip frameworks_base-93e7e22ec91dbc641d10ca6d70423e1357a95bba.tar.gz frameworks_base-93e7e22ec91dbc641d10ca6d70423e1357a95bba.tar.bz2 |
Add backup side of new FullBackupAgent class
This class backs up an app's entire data directory tree. Intended for use
by the backup-through-adb full mirroring facility, etc. @hide because
it's not really something end apps will need to use.
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/app/FullBackupAgent.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/core/java/android/app/FullBackupAgent.java b/core/java/android/app/FullBackupAgent.java new file mode 100644 index 0000000..18d62e3 --- /dev/null +++ b/core/java/android/app/FullBackupAgent.java @@ -0,0 +1,58 @@ +package android.app; + +import android.backup.BackupDataOutput; +import android.backup.FileBackupHelper; +import android.os.ParcelFileDescriptor; +import android.util.Log; + +import java.io.File; +import java.util.ArrayList; +import java.util.LinkedList; + +/** + * Backs up an application's entire /data/data/<package>/... file system. This + * class is used by the desktop full backup mechanism and is not intended for direct + * use by applications. + * + * {@hide} + */ + +public class FullBackupAgent extends BackupAgent { + // !!! TODO: turn off debugging + private static final String TAG = "FullBackupAgent"; + private static final boolean DEBUG = true; + + @Override + public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, + ParcelFileDescriptor newState) { + LinkedList<File> dirsToScan = new LinkedList<File>(); + ArrayList<String> allFiles = new ArrayList<String>(); + + // build the list of files in the app's /data/data tree + dirsToScan.add(getFilesDir()); + if (DEBUG) Log.v(TAG, "Backing up dir tree @ " + getFilesDir().getAbsolutePath() + " :"); + while (dirsToScan.size() > 0) { + File dir = dirsToScan.removeFirst(); + File[] contents = dir.listFiles(); + if (contents != null) { + for (File f : contents) { + if (f.isDirectory()) { + dirsToScan.add(f); + } else if (f.isFile()) { + if (DEBUG) Log.v(TAG, " " + f.getAbsolutePath()); + allFiles.add(f.getAbsolutePath()); + } + } + } + } + + // That's the file set; now back it all up + FileBackupHelper.performBackup(this, oldState, data, newState, + (String[]) allFiles.toArray()); + } + + @Override + public void onRestore(ParcelFileDescriptor data, ParcelFileDescriptor newState) { + } + +} |