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();
|
registerReceiver();
|
||||||
if (connectivityManagerDelegate.supportNetworkCallback()) {
|
if (connectivityManagerDelegate.supportNetworkCallback()) {
|
||||||
mobileNetworkCallback = new NetworkCallback();
|
// On Android 6.0.0, the WRITE_SETTINGS permission is necessary for
|
||||||
connectivityManagerDelegate.requestMobileNetwork(mobileNetworkCallback);
|
// 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();
|
allNetworkCallback = new SimpleNetworkCallback();
|
||||||
connectivityManagerDelegate.registerNetworkCallback(allNetworkCallback);
|
connectivityManagerDelegate.registerNetworkCallback(allNetworkCallback);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user