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:
@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user