diff --git a/res/values/strings.xml b/res/values/strings.xml
index aa218c3f418..2de3688d64e 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1360,6 +1360,8 @@
Tethering disabled (USB storage is in use)
USB not connected
+
+ USB tethering has had a problem.
Mobile networks
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index b9e266a8aa9..ec552a55bcf 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -78,8 +78,10 @@ public class TetherSettings extends PreferenceActivity {
ConnectivityManager.EXTRA_AVAILABLE_TETHER);
ArrayList active = intent.getStringArrayListExtra(
ConnectivityManager.EXTRA_ACTIVE_TETHER);
+ ArrayList errored = intent.getStringArrayListExtra(
+ ConnectivityManager.EXTRA_ERRORED_TETHER);
- updateState(available, active);
+ updateState(available, active, errored);
}
}
@@ -105,13 +107,16 @@ public class TetherSettings extends PreferenceActivity {
mTetherChangeReceiver = null;
}
- private void updateState(ArrayList available, ArrayList tethered) {
+ private void updateState(ArrayList available, ArrayList tethered,
+ ArrayList 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 @@ public class TetherSettings extends PreferenceActivity {
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 @@ public class TetherSettings extends PreferenceActivity {
} 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);