From 81ec0945545cdf77782a905cf268145117a8f550 Mon Sep 17 00:00:00 2001 From: Zoran Jovanovic Date: Wed, 4 Nov 2015 14:00:03 +0100 Subject: [PATCH] Don't show MIDI USB option if not supported If device doesn't support MIDI, don't show MIDI in "Use USB for" menu when USB cable is connected. (Selecting MIDI will crash the Settings app.) Change-Id: I60f4cbb6357f162fecb574cdb6766cf5ed92e78e --- src/com/android/settings/deviceinfo/UsbBackend.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/com/android/settings/deviceinfo/UsbBackend.java b/src/com/android/settings/deviceinfo/UsbBackend.java index 210e0a0679e..340eba59f14 100644 --- a/src/com/android/settings/deviceinfo/UsbBackend.java +++ b/src/com/android/settings/deviceinfo/UsbBackend.java @@ -18,6 +18,7 @@ package com.android.settings.deviceinfo; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.PackageManager; import android.hardware.usb.UsbManager; import android.hardware.usb.UsbPort; import android.hardware.usb.UsbPortStatus; @@ -36,6 +37,7 @@ public class UsbBackend { public static final int MODE_DATA_MIDI = 0x03 << 1; private final boolean mRestricted; + private final boolean mMidi; private UserManager mUserManager; private UsbManager mUsbManager; @@ -53,6 +55,8 @@ public class UsbBackend { mUsbManager = context.getSystemService(UsbManager.class); mRestricted = mUserManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER); + mMidi = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_MIDI); + UsbPort[] ports = mUsbManager.getPorts(); // For now look for a connected port, in the future we should identify port in the // notification and pick based on that. @@ -135,6 +139,11 @@ public class UsbBackend { // No USB data modes are supported. return false; } + + if (!mMidi && (mode & MODE_DATA_MASK) == MODE_DATA_MIDI) { + return false; + } + if (mPort != null) { int power = modeToPower(mode); if ((mode & MODE_DATA_MASK) != 0) {