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();