summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-06-01 19:30:54 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-06-01 19:30:54 -0700
commitf5df83035a45173f9ecdeaef03b68abc8a940ace (patch)
treea0f02dde7a14ca6530dd1f9163dc73de6c9e779f
parent7728be035f5b3b814ef4455d1742d069dbcffb61 (diff)
parent93e7e22ec91dbc641d10ca6d70423e1357a95bba (diff)
downloadframeworks_base-f5df83035a45173f9ecdeaef03b68abc8a940ace.zip
frameworks_base-f5df83035a45173f9ecdeaef03b68abc8a940ace.tar.gz
frameworks_base-f5df83035a45173f9ecdeaef03b68abc8a940ace.tar.bz2
Merge change 2879 into donut
* changes: Add backup side of new FullBackupAgent class
-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) {
+ }
+
+}