summaryrefslogtreecommitdiffstats
path: root/packages/DefaultContainerService/src/com
diff options
context:
space:
mode:
authorPawit Pornkitprasan <p.pawit@gmail.com>2012-12-12 21:35:54 +0700
committerPawit Pornkitprasan <p.pawit@gmail.com>2012-12-13 10:11:25 +0700
commit5b576d00d34eb9da4f2e46e34d31f03d0f91ad5c (patch)
treed616011a29398dada1efda8fb8215304d627e287 /packages/DefaultContainerService/src/com
parentc90b23439994afd1e85cafa46fa968c5d5be6943 (diff)
downloadframeworks_base-5b576d00d34eb9da4f2e46e34d31f03d0f91ad5c.zip
frameworks_base-5b576d00d34eb9da4f2e46e34d31f03d0f91ad5c.tar.gz
frameworks_base-5b576d00d34eb9da4f2e46e34d31f03d0f91ad5c.tar.bz2
DefaultContainerService: implement additional methods
For usage in Settings->Storage Change-Id: I2d45198cc6ea3b84af1547873380eae2c04c0b93
Diffstat (limited to 'packages/DefaultContainerService/src/com')
-rw-r--r--packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
index cf56cba..ef66860 100644
--- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
+++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java
@@ -38,6 +38,7 @@ import android.os.Environment;
import android.os.Environment.UserEnvironment;
import android.os.FileUtils;
import android.os.IBinder;
+import android.os.Parcel;
import android.os.ParcelFileDescriptor;
import android.os.Process;
import android.os.RemoteException;
@@ -236,6 +237,40 @@ public class DefaultContainerService extends IntentService {
}
}
+ /**
+ * List content of the directory and return as marshalled Parcel.
+ * Used for calculating misc size in Settings -> Storage
+ */
+ @Override
+ public byte[] listDirectory(String path) throws RemoteException {
+ Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
+
+ final File directory = new File(path);
+ final File[] files = directory.listFiles();
+ final Parcel out = Parcel.obtain();
+
+ if (files == null) {
+ out.writeInt(0);
+ }
+ else {
+ out.writeInt(files.length);
+ for (final File file : files) {
+ out.writeString(file.getAbsolutePath());
+ out.writeString(file.getName());
+ out.writeInt(file.isDirectory() ? 1 : 0);
+ if (file.isFile()) {
+ out.writeInt(1);
+ out.writeLong(file.length());
+ }
+ else {
+ out.writeInt(0);
+ }
+ }
+ }
+
+ return out.marshall();
+ }
+
@Override
public long[] getFileSystemStats(String path) {
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
@@ -260,6 +295,17 @@ public class DefaultContainerService extends IntentService {
}
}
+ // Same as clearDirectory, but also work for files
+ @Override
+ public void deleteFile(String path) throws RemoteException {
+ Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
+
+ final File file = new File(path);
+ if (file.exists()) {
+ eraseFiles(file);
+ }
+ }
+
@Override
public long calculateInstalledSize(String packagePath, boolean isForwardLocked)
throws RemoteException {