Gracefully continue if ConnectivityManager.requestNetwork fails.

This happens on Android 6.0.0, which requires the WRITE_SETTINGS
permission, which is somewhat impractical to obtain.

R=glaznev@webrtc.org

Review URL: https://codereview.webrtc.org/1863413003 .

Cr-Commit-Position: refs/heads/master@{#12288}
This commit is contained in:
Taylor Brandstetter
2016-04-07 17:36:43 -07:00
parent 98bb6640d2
commit 05697a62fc

View File

@ -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 {