From 5b610798c254cc919bbe151479954f438ced6435 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 21 May 2019 11:13:38 +0200 Subject: [PATCH] more reliably set WiFi SSID in nearby/swap interfaces Often times, the WiFi is properly setup, the IP address is showing, but the SSID is showing as "No network yet". --- .../fdroid/net/WifiStateChangeService.java | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/app/src/full/java/org/fdroid/fdroid/net/WifiStateChangeService.java b/app/src/full/java/org/fdroid/fdroid/net/WifiStateChangeService.java index db068494e..4bf85b381 100644 --- a/app/src/full/java/org/fdroid/fdroid/net/WifiStateChangeService.java +++ b/app/src/full/java/org/fdroid/fdroid/net/WifiStateChangeService.java @@ -127,6 +127,7 @@ public class WifiStateChangeService extends IntentService { if (wifiState == WifiManager.WIFI_STATE_ENABLED) { wifiInfo = wifiManager.getConnectionInfo(); FDroidApp.ipAddressString = formatIpAddress(wifiInfo.getIpAddress()); + setSsidFromWifiInfo(wifiInfo); DhcpInfo dhcpInfo = wifiManager.getDhcpInfo(); if (dhcpInfo != null) { String netmask = formatIpAddress(dhcpInfo.netmask); @@ -168,17 +169,7 @@ public class WifiStateChangeService extends IntentService { return; } - if (wifiInfo != null) { - String ssid = wifiInfo.getSSID(); - Utils.debugLog(TAG, "Have wifi info, connected to " + ssid); - if (ssid != null) { - FDroidApp.ssid = ssid.replaceAll("^\"(.*)\"$", "$1"); - } - String bssid = wifiInfo.getBSSID(); - if (bssid != null) { - FDroidApp.bssid = bssid; - } - } + setSsidFromWifiInfo(wifiInfo); String scheme; if (Preferences.get().isLocalRepoHttpsEnabled()) { @@ -232,6 +223,20 @@ public class WifiStateChangeService extends IntentService { } } + private void setSsidFromWifiInfo(WifiInfo wifiInfo) { + if (wifiInfo != null) { + String ssid = wifiInfo.getSSID(); + Utils.debugLog(TAG, "Have wifi info, connected to " + ssid); + if (ssid != null) { + FDroidApp.ssid = ssid.replaceAll("^\"(.*)\"$", "$1"); + } + String bssid = wifiInfo.getBSSID(); + if (bssid != null) { + FDroidApp.bssid = bssid; + } + } + } + /** * Search for known Wi-Fi, Hotspot, and local network interfaces and get * the IP Address info from it. This is necessary because network