diff --git a/res/values/strings.xml b/res/values/strings.xml
index b1022147596..410795144f6 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1013,6 +1013,10 @@
Cancel
+
+
+ Another WPS session detected, please retry in a few minutes
+
Advanced
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 4628863e1fe..ffe48a9f086 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -128,11 +128,12 @@ public class WifiSettings extends SettingsPreferenceFragment
mFilter.addAction(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION);
mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
+ mFilter.addAction(WifiManager.ERROR_ACTION);
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- handleEvent(intent);
+ handleEvent(context, intent);
}
};
@@ -430,7 +431,7 @@ public class WifiSettings extends SettingsPreferenceFragment
return accessPoints;
}
- private void handleEvent(Intent intent) {
+ private void handleEvent(Context context, Intent intent) {
String action = intent.getAction();
if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
updateWifiState(intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
@@ -462,6 +463,14 @@ public class WifiSettings extends SettingsPreferenceFragment
updateConnectionState(info.getDetailedState());
} else if (WifiManager.RSSI_CHANGED_ACTION.equals(action)) {
updateConnectionState(null);
+ } else if (WifiManager.ERROR_ACTION.equals(action)) {
+ int errorCode = intent.getIntExtra(WifiManager.EXTRA_ERROR_CODE, 0);
+ switch (errorCode) {
+ case WifiManager.WPS_OVERLAP_ERROR:
+ Toast.makeText(context, R.string.wifi_wps_overlap_error,
+ Toast.LENGTH_SHORT).show();
+ break;
+ }
}
}