summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2009-06-01 16:49:50 -0700
committerChristopher Tate <ctate@google.com>2009-06-01 16:49:50 -0700
commit93e7e22ec91dbc641d10ca6d70423e1357a95bba (patch)
treeb14540bbc5176b7d1f3919a3646400063f9a6f4c /core
parentff0d91479d3c8523bc290bd1b65fcd2546be1d40 (diff)
downloadframeworks_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.java58
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/&lt;package&gt;/... 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) {
+ }
+
+}