Index: webrtc/api/java/android/org/webrtc/NetworkMonitorAutoDetect.java |
diff --git a/webrtc/api/java/android/org/webrtc/NetworkMonitorAutoDetect.java b/webrtc/api/java/android/org/webrtc/NetworkMonitorAutoDetect.java |
index e0af09ba86e1b9b87091097e78ebb1ebd52fc481..c4e3a901c970fc8f3b9543c309bd8838c47813c8 100644 |
--- a/webrtc/api/java/android/org/webrtc/NetworkMonitorAutoDetect.java |
+++ b/webrtc/api/java/android/org/webrtc/NetworkMonitorAutoDetect.java |
@@ -445,8 +445,16 @@ public class NetworkMonitorAutoDetect extends BroadcastReceiver { |
registerReceiver(); |
if (connectivityManagerDelegate.supportNetworkCallback()) { |
- mobileNetworkCallback = new NetworkCallback(); |
- connectivityManagerDelegate.requestMobileNetwork(mobileNetworkCallback); |
+ // On Android 6.0.0, the WRITE_SETTINGS permission is necessary for |
+ // requestNetwork, so it will fail. This was fixed in Android 6.0.1. |
+ NetworkCallback tempNetworkCallback = new NetworkCallback(); |
+ try { |
+ connectivityManagerDelegate.requestMobileNetwork(tempNetworkCallback); |
+ } catch (java.lang.SecurityException e) { |
+ Logging.w(TAG, "Unable to obtain permission to request a cellular network."); |
+ tempNetworkCallback = null; |
+ } |
+ mobileNetworkCallback = tempNetworkCallback; |
allNetworkCallback = new SimpleNetworkCallback(); |
connectivityManagerDelegate.registerNetworkCallback(allNetworkCallback); |
} else { |