diff options
author | Pawit Pornkitprasan <p.pawit@gmail.com> | 2012-12-12 21:35:54 +0700 |
---|---|---|
committer | Pawit Pornkitprasan <p.pawit@gmail.com> | 2012-12-13 10:11:25 +0700 |
commit | 5b576d00d34eb9da4f2e46e34d31f03d0f91ad5c (patch) | |
tree | d616011a29398dada1efda8fb8215304d627e287 /packages/DefaultContainerService/src/com | |
parent | c90b23439994afd1e85cafa46fa968c5d5be6943 (diff) | |
download | frameworks_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.java | 46 |
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 { |