diff options
author | Nick Kralevich <nnk@google.com> | 2015-07-30 16:32:48 -0700 |
---|---|---|
committer | Nick Kralevich <nnk@google.com> | 2015-07-30 16:34:01 -0700 |
commit | 8a9b03f746233fa00d4e32f018acac919c824f6f (patch) | |
tree | 39ed6ae824c4e2521ece4f78e8b93675b6afd4ce /src/com/android/settings/deviceinfo | |
parent | 6b0a2d21e65ab1c29aec925380bbf43bab22c2c1 (diff) | |
download | packages_apps_Settings-8a9b03f746233fa00d4e32f018acac919c824f6f.zip packages_apps_Settings-8a9b03f746233fa00d4e32f018acac919c824f6f.tar.gz packages_apps_Settings-8a9b03f746233fa00d4e32f018acac919c824f6f.tar.bz2 |
UsbModeChooserActivity: Ensure MIDI available with DISALLOW_USB_FILE_TRANSFER
In ec323a0849155302b3b522fe34a2638be74af420, DISALLOW_USB_FILE_TRANSFER
turned off all USB options except for "Charge Only". This is too
aggressive. MIDI should be available when DISALLOW_USB_FILE_TRANSFER
is set.
Remove mUsbManager.isUsbDataUnlocked(). That data is available
by accessing the sticky broadcast.
Bug: 22447614
Bug: 21429947
Change-Id: Icd8398c4cf43f807acf77923b0b25c18f9a9b0d0
Diffstat (limited to 'src/com/android/settings/deviceinfo')
-rw-r--r-- | src/com/android/settings/deviceinfo/UsbModeChooserActivity.java | 69 |
1 files changed, 32 insertions, 37 deletions
diff --git a/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java b/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java index 1cec281..4bdabd5 100644 --- a/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java +++ b/src/com/android/settings/deviceinfo/UsbModeChooserActivity.java @@ -22,6 +22,8 @@ import android.app.ActivityManager; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; +import android.content.Intent; +import android.content.IntentFilter; import android.hardware.usb.UsbManager; import android.os.Bundle; import android.os.UserManager; @@ -35,23 +37,34 @@ import com.android.settings.R; public class UsbModeChooserActivity extends Activity { private UsbManager mUsbManager; + private String[] mFunctions; + private boolean mIsUnlocked; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { + Intent i = getBaseContext().registerReceiver(null, new IntentFilter(UsbManager.ACTION_USB_STATE)); + mIsUnlocked = i.getBooleanExtra(UsbManager.USB_DATA_UNLOCKED, false); + super.onCreate(savedInstanceState); mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE); + boolean isFileTransferRestricted = ((UserManager) getSystemService(Context.USER_SERVICE)) + .hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER); CharSequence[] items; - UserManager userManager = - (UserManager) getSystemService(Context.USER_SERVICE); - if (userManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER)) { - items = new CharSequence[] { getText(R.string.usb_use_charging_only) }; + if (isFileTransferRestricted) { + items = new CharSequence[] { getText(R.string.usb_use_charging_only), getText(R.string.usb_use_MIDI)}; + mFunctions = new String[] { null, UsbManager.USB_FUNCTION_MIDI }; } else { - items = getResources().getTextArray(R.array.usb_available_functions); + items = new CharSequence[] { + getText(R.string.usb_use_charging_only), getText(R.string.usb_use_file_transfers), + getText(R.string.usb_use_photo_transfers), getText(R.string.usb_use_MIDI)}; + mFunctions = new String[] { null, UsbManager.USB_FUNCTION_MTP, + UsbManager.USB_FUNCTION_PTP, UsbManager.USB_FUNCTION_MIDI }; } final AlertDialog levelDialog; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.usb_use); + builder.setSingleChoiceItems(items, getCurrentFunction(), new DialogInterface.OnClickListener() { @Override @@ -79,45 +92,27 @@ public class UsbModeChooserActivity extends Activity { levelDialog.show(); } - /* - * If you change the numbers here, you also need to change R.array.usb_available_functions - * so that everything matches. - */ private int getCurrentFunction() { - if (!mUsbManager.isUsbDataUnlocked()) { + if (!mIsUnlocked) { return 0; - } else if (mUsbManager.isFunctionEnabled(UsbManager.USB_FUNCTION_MTP)) { - return 1; - } else if (mUsbManager.isFunctionEnabled(UsbManager.USB_FUNCTION_PTP)) { - return 2; - } else if (mUsbManager.isFunctionEnabled(UsbManager.USB_FUNCTION_MIDI)) { - return 3; + } + + for (int i = 1; i < mFunctions.length; i++) { + if (mUsbManager.isFunctionEnabled(mFunctions[i])) { + return i; + } } return 0; } - /* - * If you change the numbers here, you also need to change R.array.usb_available_functions - * so that everything matches. - */ private void setCurrentFunction(int which) { - switch (which) { - case 0: - mUsbManager.setCurrentFunction(null); - 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; + if (which == 0) { + mUsbManager.setCurrentFunction(null); + mUsbManager.setUsbDataUnlocked(false); + return; } + + mUsbManager.setCurrentFunction(mFunctions[which]); + mUsbManager.setUsbDataUnlocked(true); } } |