diff --git a/res/values/arrays.xml b/res/values/arrays.xml index ee44401bd0e..8967ff24ddd 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -349,7 +349,9 @@ WPS push button - WPS pin method + WPS pin from access point + + WPS pin from this device diff --git a/res/values/strings.xml b/res/values/strings.xml index 839d13c0d4c..5e46158c3c0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -916,6 +916,10 @@ Network Setup Enter pin from access point + + WPS pin method configuration + + Enter the pin %1$s on the access point Network SSID @@ -956,6 +960,8 @@ Disabled Not in range + + WPS available Secured with %1$s diff --git a/src/com/android/settings/wifi/AccessPoint.java b/src/com/android/settings/wifi/AccessPoint.java index 054c6ff93ac..c932978abf7 100644 --- a/src/com/android/settings/wifi/AccessPoint.java +++ b/src/com/android/settings/wifi/AccessPoint.java @@ -119,7 +119,7 @@ class AccessPoint extends Preference { ssid = result.SSID; bssid = result.BSSID; security = getSecurity(result); - wpsAvailable = security != SECURITY_NONE && security != SECURITY_EAP && + wpsAvailable = security != SECURITY_EAP && result.capabilities.contains("WPS"); networkId = -1; mRssi = result.level; @@ -222,7 +222,11 @@ class AccessPoint extends Preference { } if (security == SECURITY_NONE) { - setSummary(status); + if (wpsAvailable && mConfig == null) { + setSummary(context.getString(R.string.wifi_open_with_wps)); + } else { + setSummary(status); + } } else { String format; if (wpsAvailable && mConfig == null) { diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index 597c5a3a6dd..d1700a69a34 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -92,7 +92,8 @@ public class WifiConfigController implements TextWatcher, /* These values come from "wifi_network_setup" resource array */ public static final int MANUAL = 0; public static final int WPS_PBC = 1; - public static final int WPS_PIN = 2; + public static final int WPS_PIN_FROM_ACCESS_POINT = 2; + public static final int WPS_PIN_FROM_DEVICE = 3; /* These values come from "wifi_proxy_settings" resource array */ public static final int PROXY_NONE = 0; @@ -491,14 +492,15 @@ public class WifiConfigController implements TextWatcher, int pos = mNetworkSetupSpinner.getSelectedItemPosition(); /* Show pin text input if needed */ - if (pos == WPS_PIN) { + if (pos == WPS_PIN_FROM_ACCESS_POINT) { mView.findViewById(R.id.wps_fields).setVisibility(View.VISIBLE); } else { mView.findViewById(R.id.wps_fields).setVisibility(View.GONE); } /* show/hide manual security fields appropriately */ - if ((pos == WPS_PIN) || (pos == WPS_PBC)) { + if ((pos == WPS_PIN_FROM_ACCESS_POINT) || (pos == WPS_PIN_FROM_DEVICE) + || (pos == WPS_PBC)) { mView.findViewById(R.id.security_fields).setVisibility(View.GONE); } else { mView.findViewById(R.id.security_fields).setVisibility(View.VISIBLE); diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 30c2a3d6431..d8d0a60a278 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -23,6 +23,7 @@ import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import android.app.Activity; +import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; @@ -642,9 +643,17 @@ public class WifiSettings extends SettingsPreferenceFragment case WifiConfigController.WPS_PBC: mWifiManager.startWpsPbc(mSelectedAccessPoint.bssid); break; - case WifiConfigController.WPS_PIN: + case WifiConfigController.WPS_PIN_FROM_ACCESS_POINT: int apPin = configController.getWpsPin(); - mWifiManager.startWpsPin(mSelectedAccessPoint.bssid, apPin); + mWifiManager.startWpsWithPinFromAccessPoint(mSelectedAccessPoint.bssid, apPin); + break; + case WifiConfigController.WPS_PIN_FROM_DEVICE: + int pin = mWifiManager.startWpsWithPinFromDevice(mSelectedAccessPoint.bssid); + 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(); break; case WifiConfigController.MANUAL: final WifiConfiguration config = configController.getConfig();