diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-06-01 19:30:54 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-06-01 19:30:54 -0700 |
commit | f5df83035a45173f9ecdeaef03b68abc8a940ace (patch) | |
tree | a0f02dde7a14ca6530dd1f9163dc73de6c9e779f /core/java | |
parent | 7728be035f5b3b814ef4455d1742d069dbcffb61 (diff) | |
parent | 93e7e22ec91dbc641d10ca6d70423e1357a95bba (diff) | |
download | frameworks_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
Diffstat (limited to 'core/java')
-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) { + } + +} |