Fix bad USB configuration under Developer Options
The USB configuration screen under Developer Options hasn't been
updated for the new USB access control changes. Update it.
1) Ensure that the default in Development Settings is "Charger Only".
2) Changing USB mode in developer settings only changes the USB function.
It doesn't unlock any USB data.
Bug: 21258972
Change-Id: I9cbd5099cb55f31f1258e512e5ee7f6f4e303fc9
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 23d0582..6c1f68b 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -1329,6 +1329,7 @@
<!-- USB configuration names for Developer Settings.
This can be overridden by devices with additional USB configurations. -->
<string-array name="usb_configuration_titles">
+ <item>@string/usb_use_charging_only</item>
<item>MTP (Media Transfer Protocol)</item>
<item>PTP (Picture Transfer Protocol)</item>
<item>RNDIS (USB Ethernet)</item>
@@ -1342,6 +1343,8 @@
Do not translate. -->
<string-array name="usb_configuration_values" translatable="false">
<!-- Do not translate. -->
+ <item>none</item>
+ <!-- Do not translate. -->
<item>mtp</item>
<!-- Do not translate. -->
<item>ptp</item>
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 759c2a5..89b081a 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -149,18 +149,15 @@
private static final String OVERLAY_DISPLAY_DEVICES_KEY = "overlay_display_devices";
private static final String ENABLE_MULTI_WINDOW_KEY = "enable_multi_window";
private static final String DEBUG_DEBUGGING_CATEGORY_KEY = "debug_debugging_category";
- private static final String DEBUG_APPLICATIONS_CATEGORY_KEY = "debug_applications_category";
private static final String SELECT_LOGD_SIZE_KEY = "select_logd_size";
private static final String SELECT_LOGD_SIZE_PROPERTY = "persist.logd.size";
private static final String SELECT_LOGD_DEFAULT_SIZE_PROPERTY = "ro.logd.size";
- private static final String DEBUG_NETWORKING_CATEGORY_KEY = "debug_networking_category";
private static final String WIFI_DISPLAY_CERTIFICATION_KEY = "wifi_display_certification";
private static final String WIFI_VERBOSE_LOGGING_KEY = "wifi_verbose_logging";
private static final String WIFI_AGGRESSIVE_HANDOVER_KEY = "wifi_aggressive_handover";
private static final String WIFI_ALLOW_SCAN_WITH_TRAFFIC_KEY = "wifi_allow_scan_with_traffic";
private static final String USB_CONFIGURATION_KEY = "select_usb_configuration";
- private static final String SELECT_USB_CONFIGURATION_PROPERTY = "sys.usb.config";
private static final String WIFI_LEGACY_DHCP_CLIENT_KEY = "legacy_dhcp_client";
private static final String MOBILE_DATA_ALWAYS_ON = "mobile_data_always_on";
@@ -1336,31 +1333,19 @@
private void updateUsbConfigurationValues() {
if (mUsbConfiguration != null) {
- String currentValue = SystemProperties.get(SELECT_USB_CONFIGURATION_PROPERTY);
-
- // Ignore adb interface. The USB Manager adds or removes adb automatically
- // depending on if USB debugging is enabled.
- int adbIndex = currentValue.indexOf(",adb");
- if (adbIndex > 0) {
- currentValue = currentValue.substring(0, adbIndex);
- }
+ UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
String[] values = getResources().getStringArray(R.array.usb_configuration_values);
String[] titles = getResources().getStringArray(R.array.usb_configuration_titles);
- int index = 1; // punt to second entry if not found
+ int index = 0;
for (int i = 0; i < titles.length; i++) {
- if (currentValue.equals(values[i])) {
+ if (manager.isFunctionEnabled(values[i])) {
index = i;
break;
}
}
- if (index >= 0) {
- mUsbConfiguration.setValue(values[index]);
- mUsbConfiguration.setSummary(titles[index]);
- } else {
- mUsbConfiguration.setValue("");
- mUsbConfiguration.setSummary("");
- }
+ mUsbConfiguration.setValue(values[index]);
+ mUsbConfiguration.setSummary(titles[index]);
mUsbConfiguration.setOnPreferenceChangeListener(this);
}
}