diff --git a/res/values/strings.xml b/res/values/strings.xml index a5ce77688a3..b1022147596 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -948,10 +948,14 @@ Network Setup Enter pin from access point - - WPS pin method configuration - + + WPS Setup + Enter the pin %1$s on the access point + + WPS is already in progress and can take tens of seconds to complete + + Failed to start WPS, please try again Network SSID diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index e47660a241f..4628863e1fe 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -37,7 +37,9 @@ import android.net.wifi.SupplicantState; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; +import android.net.wifi.WpsResult; import android.net.wifi.WifiConfiguration.KeyMgmt; +import android.net.wifi.WpsConfiguration; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -571,18 +573,32 @@ public class WifiSettings extends SettingsPreferenceFragment } /* package */ void submit(WifiConfigController configController) { - switch(configController.chosenNetworkSetupMethod()) { + int networkSetup = configController.chosenNetworkSetupMethod(); + switch(networkSetup) { case WifiConfigController.WPS_PBC: case WifiConfigController.WPS_PIN_FROM_ACCESS_POINT: - mWifiManager.startWps(configController.getWpsConfig()); - break; case WifiConfigController.WPS_PIN_FROM_DEVICE: - String pin = mWifiManager.startWps(configController.getWpsConfig()); - new AlertDialog.Builder(getActivity()) - .setTitle(R.string.wifi_wps_pin_method_configuration) - .setMessage(getResources().getString(R.string.wifi_wps_pin_output, pin)) - .setPositiveButton(android.R.string.ok, null) - .show(); + WpsResult result = mWifiManager.startWps(configController.getWpsConfig()); + AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity()) + .setTitle(R.string.wifi_wps_setup_title) + .setPositiveButton(android.R.string.ok, null); + switch (result.status) { + case FAILURE: + dialog.setMessage(R.string.wifi_wps_failed); + dialog.show(); + break; + case IN_PROGRESS: + dialog.setMessage(R.string.wifi_wps_in_progress); + dialog.show(); + break; + default: + if (networkSetup == WifiConfigController.WPS_PIN_FROM_DEVICE) { + dialog.setMessage(getResources().getString(R.string.wifi_wps_pin_output, + result.pin)); + dialog.show(); + } + break; + } break; case WifiConfigController.MANUAL: final WifiConfiguration config = configController.getConfig();