diff options
author | Vinit Deshpande <vinitd@google.com> | 2015-04-15 18:10:55 -0700 |
---|---|---|
committer | Vinit Deshpande <vinitd@google.com> | 2015-04-29 16:32:01 -0700 |
commit | fc40600e30e281712f6c2fc899fc3894b8ad0050 (patch) | |
tree | 025473199fa8a01b5aa35e503566e46fe767d6c6 /packages/SettingsLib | |
parent | c0667853ffad211a5dd40202ff1a4601449b745e (diff) | |
download | frameworks_base-fc40600e30e281712f6c2fc899fc3894b8ad0050.zip frameworks_base-fc40600e30e281712f6c2fc899fc3894b8ad0050.tar.gz frameworks_base-fc40600e30e281712f6c2fc899fc3894b8ad0050.tar.bz2 |
Fix settings UI for passpoint networks [DO NOT MERGE]
This change includes showing the friendly name in saved
networks list and 'Connected via provider' addition for
passpoint connections.
Change-Id: If330baa96dedb099d5989b3df5b9778bbbcb15e3
(cherry picked from commit 597f49cdda63fef1b583e2053341485e8d4e2371)
Diffstat (limited to 'packages/SettingsLib')
3 files changed, 46 insertions, 6 deletions
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index b5e49ce..8fd56cb 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -67,6 +67,8 @@ <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] --> <string name="connected_via_wfa">Connected via Wi\u2011Fi assistant</string> + <!-- Status message of Wi-Fi when it is connected by Passpoint configuration. [CHAR LIMIT=NONE] --> + <string name="connected_via_passpoint">Connected via %1$s</string> <!-- Bluetooth settings. Message when a device is disconnected --> <string name="bluetooth_disconnected">Disconnected</string> diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java index e8ab220..458d002 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java @@ -26,6 +26,7 @@ import android.net.wifi.WifiConfiguration.KeyMgmt; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Bundle; +import android.text.TextUtils; import android.util.Log; import android.util.LruCache; @@ -274,8 +275,10 @@ public class AccessPoint implements Comparable<AccessPoint> { StringBuilder summary = new StringBuilder(); if (isActive()) { // This is the active connection + String passpointProvider = (mConfig != null && mConfig.isPasspoint()) ? + mConfig.providerFriendlyName : null; summary.append(getSummary(mContext, getDetailedState(), - networkId == WifiConfiguration.INVALID_NETWORK_ID)); + networkId == WifiConfiguration.INVALID_NETWORK_ID, passpointProvider)); } else if (mConfig != null && mConfig.hasNoInternetAccess()) { summary.append(mContext.getString(R.string.wifi_no_internet)); @@ -559,7 +562,11 @@ public class AccessPoint implements Comparable<AccessPoint> { } 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)); + security = getSecurity(config); networkId = config.networkId; mConfig = config; @@ -643,11 +650,21 @@ public class AccessPoint implements Comparable<AccessPoint> { return reorder; } + void update(WifiConfiguration config) { + mConfig = config; + } + public static String getSummary(Context context, String ssid, DetailedState state, - boolean isEphemeral) { + boolean isEphemeral, String passpointProvider) { if (state == DetailedState.CONNECTED && isEphemeral && ssid == null) { - // Special case for connected + ephemeral networks. - return context.getString(R.string.connected_via_wfa); + 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) @@ -661,7 +678,12 @@ public class AccessPoint implements Comparable<AccessPoint> { } public static String getSummary(Context context, DetailedState state, boolean isEphemeral) { - return getSummary(context, null, state, isEphemeral); + return getSummary(context, null, state, isEphemeral, null); + } + + public static String getSummary(Context context, DetailedState state, boolean isEphemeral, + String passpointProvider) { + return getSummary(context, null, state, isEphemeral, passpointProvider); } public static String convertToQuotedString(String string) { diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java index 2eb7abf..3240d0f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java @@ -220,14 +220,21 @@ public class WifiTracker { /** 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 = mWifiManager.getConfiguredNetworks(); if (configs != null) { mSavedNetworksExist = configs.size() != 0; for (WifiConfiguration config : configs) { + if (mLastInfo != null && mLastInfo.getNetworkId() == config.networkId) { + connectionConfig = config; + } if (config.selfAdded && config.numAssociation == 0) { continue; } + if (config.isPasspoint()) { + continue; + } AccessPoint accessPoint = getCachedOrCreate(config); if (mLastInfo != null && mLastNetworkInfo != null) { accessPoint.update(mLastInfo, mLastNetworkInfo); @@ -264,6 +271,15 @@ public class WifiTracker { if (mLastInfo != null && mLastNetworkInfo != null) { accessPoint.update(mLastInfo, mLastNetworkInfo); } + + if (mLastInfo != null && mLastInfo.getBSSID() != null + && mLastInfo.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); + } + mAccessPoints.add(accessPoint); apMap.put(accessPoint.getSsid(), accessPoint); } |