diff --git a/res/values/strings.xml b/res/values/strings.xml
index e177112586c..648bd2b3337 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1687,6 +1687,8 @@
Authentication failure. Please try again.
Another WPS session was detected. Please try again in a few minutes.
+
+ Wi\u2011Fi disconnected. WPS setup canceled.
Network name
diff --git a/src/com/android/settings/wifi/WpsDialog.java b/src/com/android/settings/wifi/WpsDialog.java
index 3de272968bb..440b72d9e05 100644
--- a/src/com/android/settings/wifi/WpsDialog.java
+++ b/src/com/android/settings/wifi/WpsDialog.java
@@ -125,6 +125,7 @@ public class WpsDialog extends AlertDialog {
mFilter = new IntentFilter();
+ mFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
mReceiver = new BroadcastReceiver() {
@Override
@@ -261,7 +262,18 @@ public class WpsDialog extends AlertDialog {
private void handleEvent(Context context, Intent intent) {
String action = intent.getAction();
- if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
+ if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
+ final int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
+ WifiManager.WIFI_STATE_UNKNOWN);
+ if (state == WifiManager.WIFI_STATE_DISABLED) {
+ if (mTimer != null) {
+ mTimer.cancel();
+ mTimer = null;
+ }
+ String msg = mContext.getString(R.string.wifi_wps_failed_wifi_disconnected);
+ updateDialog(DialogState.WPS_FAILED, msg);
+ }
+ } else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
NetworkInfo info = (NetworkInfo) intent.getParcelableExtra(
WifiManager.EXTRA_NETWORK_INFO);
final NetworkInfo.DetailedState state = info.getDetailedState();