diff options
author | Vinit Deshpande <vinitd@google.com> | 2015-03-24 19:10:42 -0700 |
---|---|---|
committer | Vinit Deshpande <vinitd@google.com> | 2015-03-25 15:41:03 -0700 |
commit | 15b4c84c315f3998308e7e58ebcfdc388800e6a6 (patch) | |
tree | 773e84d02f0a0826051e262d1e18fb1463a06d8c /src/com/android/settings/wifi | |
parent | fc75374b0afeac5ad1f0217299bbbe3c29a015c0 (diff) | |
download | packages_apps_Settings-15b4c84c315f3998308e7e58ebcfdc388800e6a6.zip packages_apps_Settings-15b4c84c315f3998308e7e58ebcfdc388800e6a6.tar.gz packages_apps_Settings-15b4c84c315f3998308e7e58ebcfdc388800e6a6.tar.bz2 |
Fix settings UI for passpoint networks
This change includes showing the friendly name in saved
networks list and 'Connected via provider' addition for
passpoint connections.
Change-Id: I613770e0468f888c280e82a89b8a012a841d5bbd
Diffstat (limited to 'src/com/android/settings/wifi')
-rw-r--r-- | src/com/android/settings/wifi/AccessPoint.java | 16 | ||||
-rw-r--r-- | src/com/android/settings/wifi/Summary.java | 26 | ||||
-rw-r--r-- | src/com/android/settings/wifi/WifiSettings.java | 23 |
3 files changed, 58 insertions, 7 deletions
diff --git a/src/com/android/settings/wifi/AccessPoint.java b/src/com/android/settings/wifi/AccessPoint.java index 1bf1a5c..1d5f8ce 100644 --- a/src/com/android/settings/wifi/AccessPoint.java +++ b/src/com/android/settings/wifi/AccessPoint.java @@ -230,7 +230,11 @@ class AccessPoint extends Preference { } private void loadConfig(WifiConfiguration config) { - ssid = (config.SSID == null ? "" : removeDoubleQuotes(config.SSID)); + if (config.isPasspoint()) + ssid = config.providerFriendlyName; + else + ssid = (config.SSID == null ? "" : removeDoubleQuotes(config.SSID)); + bssid = config.BSSID; security = getSecurity(config); networkId = config.networkId; @@ -360,6 +364,7 @@ class AccessPoint extends Preference { refresh(); return true; } + return false; } @@ -394,6 +399,11 @@ class AccessPoint extends Preference { } } + void update(WifiConfiguration config) { + mConfig = config; + refresh(); + } + int getLevel() { if (mRssi == Integer.MAX_VALUE) { return -1; @@ -617,8 +627,10 @@ class AccessPoint extends Preference { StringBuilder summary = new StringBuilder(); if (isActive()) { // This is the active connection + String passpointProvider = (mConfig != null && mConfig.isPasspoint()) ? + mConfig.providerFriendlyName : null; summary.append(Summary.get(context, getState(), - networkId == WifiConfiguration.INVALID_NETWORK_ID)); + networkId == WifiConfiguration.INVALID_NETWORK_ID, passpointProvider)); } else if (mConfig != null && mConfig.hasNoInternetAccess()) { summary.append(context.getString(R.string.wifi_no_internet)); diff --git a/src/com/android/settings/wifi/Summary.java b/src/com/android/settings/wifi/Summary.java index 123f64a..2abe3b9 100644 --- a/src/com/android/settings/wifi/Summary.java +++ b/src/com/android/settings/wifi/Summary.java @@ -20,12 +20,20 @@ import com.android.settings.R; import android.content.Context; import android.net.NetworkInfo.DetailedState; +import android.text.TextUtils; class Summary { - static String get(Context context, String ssid, DetailedState state, boolean isEphemeral) { - if (state == DetailedState.CONNECTED && isEphemeral && ssid == null) { - // Special case for connected + ephemeral networks. - return context.getString(R.string.connected_via_wfa); + static String get(Context context, String ssid, DetailedState state, boolean isEphemeral, + String passpointProvider) { + if (state == DetailedState.CONNECTED) { + if (TextUtils.isEmpty(passpointProvider) == false) { + // Special case for connected + ephemeral networks. + String format = context.getString(R.string.connected_via_passpoint); + return String.format(format, passpointProvider); + } else if (isEphemeral && ssid == null) { + // Special case for connected + ephemeral networks. + return context.getString(R.string.connected_via_wfa); + } } String[] formats = context.getResources().getStringArray((ssid == null) @@ -38,7 +46,15 @@ class Summary { return String.format(formats[index], ssid); } + static String get(Context context, String ssid, DetailedState state, boolean isEphemeral) { + return get(context, ssid, state, isEphemeral, null); + } static String get(Context context, DetailedState state, boolean isEphemeral) { - return get(context, null, state, isEphemeral); + return get(context, null, state, isEphemeral, null); + } + + static String get(Context context, DetailedState state, boolean isEphemeral, + String passpointProvider) { + return get(context, null, state, isEphemeral, passpointProvider); } } diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 54ebc6d..2fd695d 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -653,6 +653,7 @@ public class WifiSettings extends RestrictedSettingsFragment switch (wifiState) { case WifiManager.WIFI_STATE_ENABLED: // AccessPoints are automatically sorted with TreeSet. + mLastInfo = mWifiManager.getConnectionInfo(); final Collection<AccessPoint> accessPoints = constructAccessPoints(getActivity(), mWifiManager, mLastInfo, mLastNetworkInfo); @@ -721,6 +722,7 @@ public class WifiSettings extends RestrictedSettingsFragment /** Lookup table to more quickly update AccessPoints by only considering objects with the * correct SSID. Maps SSID -> List of AccessPoints with the given SSID. */ Multimap<String, AccessPoint> apMap = new Multimap<String, AccessPoint>(); + WifiConfiguration connectionConfig = null; final List<WifiConfiguration> configs = wifiManager.getConfiguredNetworks(); if (configs != null) { @@ -732,13 +734,23 @@ public class WifiSettings extends RestrictedSettingsFragment } } for (WifiConfiguration config : configs) { + if (lastInfo != null && lastInfo.getNetworkId() == config.networkId) { + connectionConfig = config; + } + if (config.selfAdded && config.numAssociation == 0) { continue; } + + if (config.isPasspoint()) { + continue; + } + AccessPoint accessPoint = new AccessPoint(context, config); if (lastInfo != null && lastNetworkInfo != null) { accessPoint.update(lastInfo, lastNetworkInfo); } + accessPoints.add(accessPoint); apMap.put(accessPoint.ssid, accessPoint); } @@ -758,11 +770,22 @@ public class WifiSettings extends RestrictedSettingsFragment if (accessPoint.update(result)) found = true; } + if (!found) { + AccessPoint accessPoint = new AccessPoint(context, result); if (lastInfo != null && lastNetworkInfo != null) { accessPoint.update(lastInfo, lastNetworkInfo); } + + if (lastInfo != null && lastInfo.getBSSID() != null + && lastInfo.getBSSID().equals(result.BSSID) + && connectionConfig != null && connectionConfig.isPasspoint()) { + /* This network is connected via this passpoint config */ + /* SSID match is not going to work for it; so update explicitly */ + accessPoint.update(connectionConfig); + } + accessPoints.add(accessPoint); apMap.put(accessPoint.ssid, accessPoint); } |