Fix USB access control when adb is disabled.
When adb is disabled, the default usb mode would be "none", which would turn off the driver and prevent UsbDeviceManager from receiving any new USB connect / disconnect messages. This prevents the user from ever enabling MTP and sharing data when adb is turned off. As discussed in bug 21429947, we work around this problem by keeping the USB driver in MTP mode most of the time, so that we continue to receive USB connect / disconnect messages. To avoid leaking confidential user photos, we now explicitly unlock USB data after switching into MTP/PTP mode. Enabling MTP mode is now decoupled from exposing data on the USB connection. Bug: 21429947 Change-Id: Id8e9df4ac42fdcf22cc5b75b838bf46f6c225081
This commit is contained in:
@@ -76,7 +76,9 @@ public class UsbModeChooserActivity extends Activity {
|
||||
* so that everything matches.
|
||||
*/
|
||||
private int getCurrentFunction() {
|
||||
if (mUsbManager.isFunctionEnabled(UsbManager.USB_FUNCTION_MTP)) {
|
||||
if (!mUsbManager.isUsbDataUnlocked()) {
|
||||
return 0;
|
||||
} else if (mUsbManager.isFunctionEnabled(UsbManager.USB_FUNCTION_MTP)) {
|
||||
return 1;
|
||||
} else if (mUsbManager.isFunctionEnabled(UsbManager.USB_FUNCTION_PTP)) {
|
||||
return 2;
|
||||
@@ -93,16 +95,20 @@ public class UsbModeChooserActivity extends Activity {
|
||||
private void setCurrentFunction(int which) {
|
||||
switch (which) {
|
||||
case 0:
|
||||
mUsbManager.setCurrentFunction("none");
|
||||
mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MTP);
|
||||
mUsbManager.setUsbDataUnlocked(false);
|
||||
break;
|
||||
case 1:
|
||||
mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MTP);
|
||||
mUsbManager.setUsbDataUnlocked(true);
|
||||
break;
|
||||
case 2:
|
||||
mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_PTP);
|
||||
mUsbManager.setUsbDataUnlocked(true);
|
||||
break;
|
||||
case 3:
|
||||
mUsbManager.setCurrentFunction(UsbManager.USB_FUNCTION_MIDI);
|
||||
mUsbManager.setUsbDataUnlocked(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user