summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/wifi
diff options
context:
space:
mode:
authorVinit Deshpande <vinitd@google.com>2015-03-24 19:10:42 -0700
committerVinit Deshpande <vinitd@google.com>2015-03-25 15:41:03 -0700
commit15b4c84c315f3998308e7e58ebcfdc388800e6a6 (patch)
tree773e84d02f0a0826051e262d1e18fb1463a06d8c /src/com/android/settings/wifi
parentfc75374b0afeac5ad1f0217299bbbe3c29a015c0 (diff)
downloadpackages_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.java16
-rw-r--r--src/com/android/settings/wifi/Summary.java26
-rw-r--r--src/com/android/settings/wifi/WifiSettings.java23
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);
}