diff --git a/devicesetup/src/main/java/io/particle/android/sdk/devicesetup/ApConnector.java b/devicesetup/src/main/java/io/particle/android/sdk/devicesetup/ApConnector.java index 58c6513..30c67fc 100644 --- a/devicesetup/src/main/java/io/particle/android/sdk/devicesetup/ApConnector.java +++ b/devicesetup/src/main/java/io/particle/android/sdk/devicesetup/ApConnector.java @@ -248,8 +248,11 @@ private void onWifiChangeBroadcastReceived(Intent intent, WifiConfiguration conf return; } SSID newlyConnectedSSID = SSID.from(wifiInfo); - log.i("Connected to: " + newlyConnectedSSID); + log.i("Connected to : " + newlyConnectedSSID); + if (newlyConnectedSSID.equals(SSID.from(config))) { + log.d("Trying to bind : " + newlyConnectedSSID); + wifiFacade.bindProcessToNetwork(); // FIXME: find a way to record success in memory in case this happens to happen // during a config change (etc)? client.onApConnectionSuccessful(config); diff --git a/devicesetup/src/main/java/io/particle/android/sdk/utils/WifiFacade.java b/devicesetup/src/main/java/io/particle/android/sdk/utils/WifiFacade.java index 3066fbf..7cc6aff 100644 --- a/devicesetup/src/main/java/io/particle/android/sdk/utils/WifiFacade.java +++ b/devicesetup/src/main/java/io/particle/android/sdk/utils/WifiFacade.java @@ -8,6 +8,7 @@ import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; +import android.os.Build; import android.os.Build.VERSION_CODES; import androidx.annotation.Nullable; @@ -142,6 +143,17 @@ public boolean enableNetwork(int networkId, boolean disableOthers) { return wifiManager.enableNetwork(networkId, disableOthers); } + public void bindProcessToNetwork() { + if (Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { + Network network = getNetworkObjectForCurrentWifiConnection(); + if (Build.VERSION.SDK_INT >= VERSION_CODES.M) { + connectivityManager.bindProcessToNetwork(network); + } else { + ConnectivityManager.setProcessDefaultNetwork(network); + } + } + } + public WifiConfiguration getWifiConfiguration(SSID ssid) { List wifiConfigurations = getConfiguredNetworks(); for (WifiConfiguration configuration : wifiConfigurations) {