am e3b498be: DO NOT MERGE StorageManager: Add getVolumeList() and getVolumeState() methods

* commit 'e3b498be0ae05367e9b84f4fac2ac5cf57a6b091':
  DO NOT MERGE StorageManager: Add getVolumeList() and getVolumeState() methods
This commit is contained in:
Mike Lockwood
2011-05-04 08:57:07 -07:00
committed by Android Git Automerger
3 changed files with 68 additions and 0 deletions

View File

@@ -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;
}

View File

@@ -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;
}
}
}

View File

@@ -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;
@@ -1731,6 +1732,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);