diff options
author | Mike Lockwood <lockwood@android.com> | 2011-03-24 08:12:30 -0700 |
---|---|---|
committer | Mike Lockwood <lockwood@android.com> | 2011-05-03 21:03:55 -0400 |
commit | d967f4664f40f9a4c5262a44b19df9bbdf457d8a (patch) | |
tree | 421898338ee3ec31b2e6ba03b36ba7deff83599d | |
parent | f097fc2fee57183508558acbca1f8742fb55615a (diff) | |
download | frameworks_base-d967f4664f40f9a4c5262a44b19df9bbdf457d8a.zip frameworks_base-d967f4664f40f9a4c5262a44b19df9bbdf457d8a.tar.gz frameworks_base-d967f4664f40f9a4c5262a44b19df9bbdf457d8a.tar.bz2 |
DO NOT MERGE StorageManager: Add getVolumeList() and getVolumeState() methods
Change-Id: I43d5c1730b340f1288b58012234b38f801001b71
Signed-off-by: Mike Lockwood <lockwood@android.com>
-rw-r--r-- | core/java/android/os/storage/IMountService.java | 29 | ||||
-rw-r--r-- | core/java/android/os/storage/StorageManager.java | 26 | ||||
-rw-r--r-- | services/java/com/android/server/MountService.java | 13 |
3 files changed, 68 insertions, 0 deletions
diff --git a/core/java/android/os/storage/IMountService.java b/core/java/android/os/storage/IMountService.java index 4c83515..27da3c3 100644 --- a/core/java/android/os/storage/IMountService.java +++ b/core/java/android/os/storage/IMountService.java @@ -637,6 +637,22 @@ public interface IMountService extends IInterface { } return _result; } + + public String[] getVolumeList() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + String[] _result; + try { + _data.writeInterfaceToken(DESCRIPTOR); + mRemote.transact(Stub.TRANSACTION_getVolumeList, _data, _reply, 0); + _reply.readException(); + _result = _reply.readStringArray(); + } finally { + _reply.recycle(); + _data.recycle(); + } + return _result; + } } private static final String DESCRIPTOR = "IMountService"; @@ -699,6 +715,8 @@ public interface IMountService extends IInterface { static final int TRANSACTION_changeEncryptionPassword = IBinder.FIRST_CALL_TRANSACTION + 28; + static final int TRANSACTION_getVolumeList = IBinder.FIRST_CALL_TRANSACTION + 29; + /** * Cast an IBinder object into an IMountService interface, generating a * proxy if needed. @@ -1004,6 +1022,13 @@ public interface IMountService extends IInterface { reply.writeInt(result); return true; } + case TRANSACTION_getVolumeList: { + data.enforceInterface(DESCRIPTOR); + String[] result = getVolumeList(); + reply.writeNoException(); + reply.writeStringArray(result); + return true; + } } return super.onTransact(code, data, reply, flags); } @@ -1179,4 +1204,8 @@ public interface IMountService extends IInterface { */ public int changeEncryptionPassword(String password) throws RemoteException; + /** + * Returns list of all mountable volumes. + */ + public String[] getVolumeList() throws RemoteException; } diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index 73ac79f..234057b 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -527,4 +527,30 @@ public class StorageManager return null; } + + /** + * Gets the state of a volume via its mountpoint. + * @hide + */ + public String getVolumeState(String mountPoint) { + try { + return mMountService.getVolumeState(mountPoint); + } catch (RemoteException e) { + Log.e(TAG, "Failed to get volume state", e); + return null; + } + } + + /** + * Returns list of all mountable volumes. + * @hide + */ + public String[] getVolumeList() { + try { + return mMountService.getVolumeList(); + } catch (RemoteException e) { + Log.e(TAG, "Failed to get volume list", e); + return null; + } + } } diff --git a/services/java/com/android/server/MountService.java b/services/java/com/android/server/MountService.java index 461a21e..a91b690 100644 --- a/services/java/com/android/server/MountService.java +++ b/services/java/com/android/server/MountService.java @@ -64,6 +64,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; @@ -1730,6 +1731,18 @@ class MountService extends IMountService.Stub implements INativeDaemonConnectorC } } + public String[] getVolumeList() { + synchronized(mVolumeStates) { + Set<String> volumes = mVolumeStates.keySet(); + String[] result = new String[volumes.size()]; + int i = 0; + for (String volume : volumes) { + result[i++] = volume; + } + return result; + } + } + private void addObbStateLocked(ObbState obbState) throws RemoteException { final IBinder binder = obbState.getBinder(); List<ObbState> obbStates = mObbMounts.get(binder); |