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: If330baa96dedb099d5989b3df5b9778bbbcb15e3
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user