Index: talk/app/webrtc/java/android/org/webrtc/NetworkMonitorAutoDetect.java |
diff --git a/talk/app/webrtc/java/android/org/webrtc/NetworkMonitorAutoDetect.java b/talk/app/webrtc/java/android/org/webrtc/NetworkMonitorAutoDetect.java |
index 11aa30a91ccf825a61826d3a3e164dcf62703d72..950dcdfa445a25ce6ecae9c7055045692703546d 100644 |
--- a/talk/app/webrtc/java/android/org/webrtc/NetworkMonitorAutoDetect.java |
+++ b/talk/app/webrtc/java/android/org/webrtc/NetworkMonitorAutoDetect.java |
@@ -96,6 +96,10 @@ public class NetworkMonitorAutoDetect extends BroadcastReceiver { |
/** Queries the ConnectivityManager for information about the current connection. */ |
static class ConnectivityManagerDelegate { |
+ /** |
+ * Note: In some rare Android systems connectivityManager is null. We handle that |
+ * gracefully below. |
+ */ |
private final ConnectivityManager connectivityManager; |
ConnectivityManagerDelegate(Context context) { |
@@ -114,6 +118,9 @@ public class NetworkMonitorAutoDetect extends BroadcastReceiver { |
* default network. |
*/ |
NetworkState getNetworkState() { |
+ if (connectivityManager == null) { |
+ return new NetworkState(false, -1, -1); |
+ } |
return getNetworkState(connectivityManager.getActiveNetworkInfo()); |
} |
@@ -123,6 +130,9 @@ public class NetworkMonitorAutoDetect extends BroadcastReceiver { |
*/ |
@SuppressLint("NewApi") |
NetworkState getNetworkState(Network network) { |
+ if (connectivityManager == null) { |
+ return new NetworkState(false, -1, -1); |
+ } |
return getNetworkState(connectivityManager.getNetworkInfo(network)); |
} |
@@ -142,6 +152,9 @@ public class NetworkMonitorAutoDetect extends BroadcastReceiver { |
*/ |
@SuppressLint("NewApi") |
Network[] getAllNetworks() { |
+ if (connectivityManager == null) { |
+ return new Network[0]; |
+ } |
return connectivityManager.getAllNetworks(); |
} |
@@ -152,6 +165,9 @@ public class NetworkMonitorAutoDetect extends BroadcastReceiver { |
*/ |
@SuppressLint("NewApi") |
int getDefaultNetId() { |
+ if (connectivityManager == null) { |
+ return INVALID_NET_ID; |
+ } |
// Android Lollipop had no API to get the default network; only an |
// API to return the NetworkInfo for the default network. To |
// determine the default network one can find the network with |
@@ -188,6 +204,9 @@ public class NetworkMonitorAutoDetect extends BroadcastReceiver { |
*/ |
@SuppressLint("NewApi") |
boolean hasInternetCapability(Network network) { |
+ if (connectivityManager == null) { |
+ return false; |
+ } |
final NetworkCapabilities capabilities = |
connectivityManager.getNetworkCapabilities(network); |
return capabilities != null && capabilities.hasCapability(NET_CAPABILITY_INTERNET); |