Merge "Only unbind Mtp service during disconnect or disable"
diff --git a/src/com/android/providers/media/MtpReceiver.java b/src/com/android/providers/media/MtpReceiver.java
index 0e89902..00f460c 100644
--- a/src/com/android/providers/media/MtpReceiver.java
+++ b/src/com/android/providers/media/MtpReceiver.java
@@ -49,6 +49,7 @@
     private void handleUsbState(Context context, Intent intent) {
         Bundle extras = intent.getExtras();
         boolean configured = extras.getBoolean(UsbManager.USB_CONFIGURED);
+        boolean connected = extras.getBoolean(UsbManager.USB_CONNECTED);
         boolean mtpEnabled = extras.getBoolean(UsbManager.USB_FUNCTION_MTP);
         boolean ptpEnabled = extras.getBoolean(UsbManager.USB_FUNCTION_PTP);
         boolean unlocked = extras.getBoolean(UsbManager.USB_DATA_UNLOCKED);
@@ -70,7 +71,8 @@
             }
             if (DEBUG) { Log.d(TAG, "handleUsbState startService"); }
             context.startService(intent);
-        } else {
+        } else if (!connected || !(mtpEnabled || ptpEnabled)) {
+            // Only unbind if disconnected or disabled.
             boolean status = context.stopService(new Intent(context, MtpService.class));
             if (DEBUG) { Log.d(TAG, "handleUsbState stopService status=" + status); }
             // tell MediaProvider MTP is disconnected so it can unbind from the service