Show Error dialog when WPS is interrupted
When WPS searching is interruptd by turning Wi-Fi off,
Error dialog should be displayed.
Bug: 29883134
Test: manual - tap WPS Push Button and turn Airplane mode on
Change-Id: Ie6667c6b7d09540af21b015e0d5b991d818d2c77
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e177112..648bd2b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1687,6 +1687,8 @@
<string name="wifi_wps_failed_auth">Authentication failure. Please try again.</string>
<!-- Text displayed when WPS fails due to another session [CHAR LIMIT=150] -->
<string name="wifi_wps_failed_overlap">Another WPS session was detected. Please try again in a few minutes.</string>
+ <!-- Text displayed when WPS fails due to wifi disconnected [CHAR LIMIT=150] -->
+ <string name="wifi_wps_failed_wifi_disconnected">Wi\u2011Fi disconnected. WPS setup canceled.</string>
<!-- Label for the SSID of the network -->
<string name="wifi_ssid">Network name</string>
<!-- Hint for a text field to enter the SSID of a hidden wifi network. [CHAR LIMIT=35] -->
diff --git a/src/com/android/settings/wifi/WpsDialog.java b/src/com/android/settings/wifi/WpsDialog.java
index 3de2729..440b72d 100644
--- a/src/com/android/settings/wifi/WpsDialog.java
+++ b/src/com/android/settings/wifi/WpsDialog.java
@@ -125,6 +125,7 @@
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 @@
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();