diff --git a/talk/app/webrtc/java/android/org/webrtc/NetworkMonitor.java b/talk/app/webrtc/java/android/org/webrtc/NetworkMonitor.java index c40dd159d9..a075b36894 100644 --- a/talk/app/webrtc/java/android/org/webrtc/NetworkMonitor.java +++ b/talk/app/webrtc/java/android/org/webrtc/NetworkMonitor.java @@ -36,6 +36,7 @@ import org.webrtc.Logging; import android.content.Context; import java.util.ArrayList; +import java.util.List; /** * Borrowed from Chromium's src/net/android/java/src/org/chromium/net/NetworkChangeNotifier.java @@ -208,10 +209,13 @@ public class NetworkMonitor { } private void updateActiveNetworkList() { - NetworkInformation[] networkInfos = autoDetector.getActiveNetworkList(); - if (networkInfos.length == 0) { + List networkInfoList = autoDetector.getActiveNetworkList(); + if (networkInfoList == null || networkInfoList.size() == 0) { return; } + + NetworkInformation[] networkInfos = new NetworkInformation[networkInfoList.size()]; + networkInfos = networkInfoList.toArray(networkInfos); for (long nativeObserver : nativeNetworkObservers) { nativeNotifyOfActiveNetworkList(nativeObserver, networkInfos); } diff --git a/talk/app/webrtc/java/android/org/webrtc/NetworkMonitorAutoDetect.java b/talk/app/webrtc/java/android/org/webrtc/NetworkMonitorAutoDetect.java index e7cfb74856..d71efc674d 100644 --- a/talk/app/webrtc/java/android/org/webrtc/NetworkMonitorAutoDetect.java +++ b/talk/app/webrtc/java/android/org/webrtc/NetworkMonitorAutoDetect.java @@ -53,6 +53,9 @@ import android.net.wifi.WifiManager; import android.os.Build; import android.telephony.TelephonyManager; +import java.util.ArrayList; +import java.util.List; + /** * Borrowed from Chromium's * src/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java @@ -241,16 +244,19 @@ public class NetworkMonitorAutoDetect extends BroadcastReceiver { return connectivityManager.getAllNetworks(); } - NetworkInformation[] getActiveNetworkList() { + List getActiveNetworkList() { if (!supportNetworkCallback()) { - return new NetworkInformation[0]; + return null; } - Network[] networks = getAllNetworks(); - NetworkInformation[] netInfos = new NetworkInformation[networks.length]; - for (int i = 0; i < networks.length; ++i) { - netInfos[i] = networkToInfo(networks[i]); + ArrayList netInfoList = new ArrayList(); + for (Network network : getAllNetworks()) { + NetworkInformation info = networkToInfo(network); + if (info.name != null && info.type != ConnectionType.CONNECTION_NONE + && info.type != ConnectionType.CONNECTION_UNKNOWN) { + netInfoList.add(info); + } } - return netInfos; + return netInfoList; } /** @@ -470,7 +476,7 @@ public class NetworkMonitorAutoDetect extends BroadcastReceiver { return isRegistered; } - NetworkInformation[] getActiveNetworkList() { + List getActiveNetworkList() { return connectivityManagerDelegate.getActiveNetworkList(); }