Add support for tethering errors.
diff --git a/res/values/strings.xml b/res/values/strings.xml
index aa218c3..2de3688 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1360,6 +1360,8 @@
<string name="usb_tethering_storage_active_subtext">Tethering disabled (USB storage is in use)</string>
<!-- USB unavailable subtext - shown when USB is not connected -->
<string name="usb_tethering_unavailable_subtext">USB not connected</string>
+ <!-- USB errored subtext - shown when USB is broken for some reason -->
+ <string name="usb_tethering_errored_subtext">USB tethering has had a problem.</string>
<!-- Wireless controls, item title to go into the network settings -->
<string name="network_settings_title">Mobile networks</string>
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index b9e266a..ec552a5 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -78,8 +78,10 @@
ConnectivityManager.EXTRA_AVAILABLE_TETHER);
ArrayList<String> active = intent.getStringArrayListExtra(
ConnectivityManager.EXTRA_ACTIVE_TETHER);
+ ArrayList<String> errored = intent.getStringArrayListExtra(
+ ConnectivityManager.EXTRA_ERRORED_TETHER);
- updateState(available, active);
+ updateState(available, active, errored);
}
}
@@ -105,13 +107,16 @@
mTetherChangeReceiver = null;
}
- private void updateState(ArrayList<String> available, ArrayList<String> tethered) {
+ private void updateState(ArrayList<String> available, ArrayList<String> tethered,
+ ArrayList<String> errored) {
boolean usbTethered = false;
boolean usbAvailable = false;
+ boolean usbErrored = false;
boolean wifiTethered = false;
boolean wifiAvailable = false;
boolean massStorageActive =
Environment.MEDIA_SHARED.equals(Environment.getExternalStorageState());
+ boolean wifiErrored = false;
for (String s : available) {
for (String regex : mUsbRegexs) {
@@ -129,6 +134,14 @@
if (s.matches(regex)) wifiTethered = true;
}
}
+ for (String s: errored) {
+ for (String regex : mUsbRegexs) {
+ if (s.matches(regex)) usbErrored = true;
+ }
+ for (String regex : mWifiRegexs) {
+ if (s.matches(regex)) wifiErrored = true;
+ }
+ }
if (usbTethered) {
mUsbTether.setSummary(R.string.usb_tethering_active_subtext);
@@ -139,6 +152,9 @@
} else if (usbAvailable) {
mUsbTether.setSummary(R.string.usb_tethering_available_subtext);
mUsbTether.setEnabled(true);
+ } else if (usbErrored) {
+ mUsbTether.setSummary(R.string.usb_tethering_errored_subtext);
+ mUsbTether.setEnabled(false);
} else {
mUsbTether.setSummary(R.string.usb_tethering_unavailable_subtext);
mUsbTether.setEnabled(false);