Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Nested Classes](https://developer.android.com/reference/android/net/ConnectivityManager#nestedclasses) \| [Constants](https://developer.android.com/reference/android/net/ConnectivityManager#constants) \| [Methods](https://developer.android.com/reference/android/net/ConnectivityManager#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/net/ConnectivityManager#inhmethods)

# ConnectivityManager

*** ** * ** ***

` public class ConnectivityManager `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.net.ConnectivityManager |

<br />

*** ** * ** ***

Class that answers queries about the state of network connectivity. It also notifies applications when network connectivity changes.

The primary responsibilities of this class are to:

1. Monitor network connections (Wi-Fi, GPRS, UMTS, etc.)
2. Send broadcast intents when network connectivity changes
3. Attempt to "fail over" to another network when connectivity to a network is lost
4. Provide an API that allows applications to query the coarse-grained or fine-grained state of the available networks
5. Provide an API that allows applications to request and select networks for their data traffic

<br />

## Summary

| ### Nested classes ||
|---|---|
| ` class` | `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` Base class for `NetworkRequest` callbacks. |
| ` interface` | `https://developer.android.com/reference/android/net/ConnectivityManager.OnNetworkActiveListener` Callback for use with `https://developer.android.com/reference/android/net/ConnectivityManager#addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener)` to find out when the system default network has gone in to a high power state. |

| ### Constants ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#ACTION_BACKGROUND_DATA_SETTING_CHANGED` *This constant was deprecated in API level 16. As of `https://developer.android.com/reference/android/os/Build.VERSION_CODES#ICE_CREAM_SANDWICH`, availability of background data depends on several combined factors, and this broadcast is no longer sent. Instead, when background data is unavailable, `https://developer.android.com/reference/android/net/ConnectivityManager#getActiveNetworkInfo()` will now appear disconnected. During first boot after a platform upgrade, this broadcast will be sent once if `https://developer.android.com/reference/android/net/ConnectivityManager#getBackgroundDataSetting()` was `false` before the upgrade.* |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#ACTION_CAPTIVE_PORTAL_SIGN_IN` The device has connected to a network that has presented a captive portal, which is blocking Internet connectivity. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#ACTION_RESTRICT_BACKGROUND_CHANGED` A change in the background metered network activity restriction has occurred. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#CONNECTIVITY_ACTION` *This constant was deprecated in API level 28. apps should use the more versatile `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)`, `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.app.PendingIntent)` or `https://developer.android.com/reference/android/net/ConnectivityManager#registerDefaultNetworkCallback(android.net.ConnectivityManager.NetworkCallback)` functions instead for faster and more detailed updates about the network changes they care about.* |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#DEFAULT_NETWORK_PREFERENCE` *This constant was deprecated in API level 18. Since we support so many more networks now, the single network default network preference can't really express the hierarchy. Instead, the default is defined by the networkAttributes in config.xml. You can determine the current value by calling `https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkPreference()` from an App.* |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_CAPTIVE_PORTAL` The lookup key for a `https://developer.android.com/reference/android/net/CaptivePortal` object included with the `https://developer.android.com/reference/android/net/ConnectivityManager#ACTION_CAPTIVE_PORTAL_SIGN_IN` intent. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_CAPTIVE_PORTAL_URL` Key for passing a URL to the captive portal login activity. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_EXTRA_INFO` *This constant was deprecated in API level 29. See `https://developer.android.com/reference/android/net/NetworkInfo#getExtraInfo()`.* |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_IS_FAILOVER` *This constant was deprecated in API level 29. See `https://developer.android.com/reference/android/net/NetworkInfo`.* |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_NETWORK` The lookup key for a `https://developer.android.com/reference/android/net/Network` object included with the intent after successfully finding a network for the applications request. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_NETWORK_INFO` *This constant was deprecated in API level 15. The `https://developer.android.com/reference/android/net/NetworkInfo` object is deprecated, as many of its properties can't accurately represent modern network characteristics. Please obtain information about networks from the `https://developer.android.com/reference/android/net/NetworkCapabilities` or `https://developer.android.com/reference/android/net/LinkProperties` objects instead.* |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_NETWORK_REQUEST` The lookup key for a `https://developer.android.com/reference/android/net/NetworkRequest` object included with the intent after successfully finding a network for the applications request. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_NETWORK_TYPE` *This constant was deprecated in API level 29. The network type is not rich enough to represent the characteristics of modern networks. Please use `https://developer.android.com/reference/android/net/NetworkCapabilities` instead, in particular the transports.* |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_NO_CONNECTIVITY` The lookup key for a boolean that indicates whether there is a complete lack of connectivity, i.e., no network is available. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_OTHER_NETWORK_INFO` *This constant was deprecated in API level 29. See `https://developer.android.com/reference/android/net/NetworkInfo`.* |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_REASON` The lookup key for a string that indicates why an attempt to connect to a network failed. |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#MULTIPATH_PREFERENCE_HANDOVER` It is acceptable to briefly use multipath data to provide seamless connectivity for time-sensitive user-facing operations when the system default network is temporarily unresponsive. |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#MULTIPATH_PREFERENCE_PERFORMANCE` It is acceptable to use metered data to improve network latency and performance. |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#MULTIPATH_PREFERENCE_RELIABILITY` It is acceptable to use small amounts of multipath data on an ongoing basis to provide a backup channel for traffic that is primarily going over another network. |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#RESTRICT_BACKGROUND_STATUS_DISABLED` Device is not restricting metered network activity while application is running on background. |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#RESTRICT_BACKGROUND_STATUS_ENABLED` Device is restricting metered network activity while application is running on background. |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#RESTRICT_BACKGROUND_STATUS_WHITELISTED` Device is restricting metered network activity while application is running on background, but application is allowed to bypass it. |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_BLUETOOTH` *This constant was deprecated in API level 28. Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request an appropriate network. See `https://developer.android.com/reference/android/net/NetworkCapabilities` for supported transports.* |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_DUMMY` *This constant was deprecated in API level 28. This is not used any more.* |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_ETHERNET` *This constant was deprecated in API level 28. Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request an appropriate network. See `https://developer.android.com/reference/android/net/NetworkCapabilities` for supported transports.* |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_MOBILE` *This constant was deprecated in API level 28. Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request an appropriate network. See `https://developer.android.com/reference/android/net/NetworkCapabilities` for supported transports.* |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_MOBILE_DUN` *This constant was deprecated in API level 28. Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasCapability(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request a network that provides the `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_DUN` capability.* |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_MOBILE_HIPRI` *This constant was deprecated in API level 23. Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request an appropriate network. See `https://developer.android.com/reference/android/net/NetworkCapabilities` for supported transports.* |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_MOBILE_MMS` *This constant was deprecated in API level 23. Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasCapability(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request a network that provides the `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_MMS` capability.* |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_MOBILE_SUPL` *This constant was deprecated in API level 23. Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasCapability(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request a network that provides the `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_SUPL` capability.* |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_VPN` *This constant was deprecated in API level 28. Applications should use `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_VPN` instead.* |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_WIFI` *This constant was deprecated in API level 28. Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request an appropriate network. See `https://developer.android.com/reference/android/net/NetworkCapabilities` for supported transports.* |
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_WIMAX` *This constant was deprecated in API level 28. Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request an appropriate network. See `https://developer.android.com/reference/android/net/NetworkCapabilities` for supported transports.* |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener)(https://developer.android.com/reference/android/net/ConnectivityManager.OnNetworkActiveListener l) ` Start listening to reports when the system's default data network is active, meaning it is a good time to perform network traffic. |
| ` boolean` | ` https://developer.android.com/reference/android/net/ConnectivityManager#bindProcessToNetwork(android.net.Network)(https://developer.android.com/reference/android/net/Network network) ` Binds the current process to `network`. |
| ` https://developer.android.com/reference/android/net/SocketKeepalive` | ` https://developer.android.com/reference/android/net/ConnectivityManager#createSocketKeepalive(android.net.Network,%20android.net.IpSecManager.UdpEncapsulationSocket,%20java.net.InetAddress,%20java.net.InetAddress,%20java.util.concurrent.Executor,%20android.net.SocketKeepalive.Callback)(https://developer.android.com/reference/android/net/Network network, https://developer.android.com/reference/android/net/IpSecManager.UdpEncapsulationSocket socket, https://developer.android.com/reference/java/net/InetAddress source, https://developer.android.com/reference/java/net/InetAddress destination, https://developer.android.com/reference/java/util/concurrent/Executor executor, https://developer.android.com/reference/android/net/SocketKeepalive.Callback callback) ` Request that keepalives be started on a IPsec NAT-T socket. |
| ` https://developer.android.com/reference/android/net/Network` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getActiveNetwork()() ` Returns a `https://developer.android.com/reference/android/net/Network` object corresponding to the currently active default data network. |
| ` https://developer.android.com/reference/android/net/NetworkInfo` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getActiveNetworkInfo()() ` *This method was deprecated in API level 29. See `https://developer.android.com/reference/android/net/NetworkInfo`.* |
| ` https://developer.android.com/reference/android/net/NetworkInfo` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getAllNetworkInfo()() ` *This method was deprecated in API level 23. This method does not support multiple connected networks of the same type. Use `https://developer.android.com/reference/android/net/ConnectivityManager#getAllNetworks()` and `https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkInfo(android.net.Network)` instead.* |
| ` https://developer.android.com/reference/android/net/Network` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getAllNetworks()() ` *This method was deprecated in API level 31. This method does not provide any notification of network state changes, forcing apps to call it repeatedly. This is inefficient and prone to race conditions. Apps should use methods such as `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` instead. Apps that desire to obtain information about networks that do not apply to them can use `https://developer.android.com/reference/android/net/NetworkRequest.Builder#setIncludeOtherUidNetworks(boolean)`.* |
| ` boolean` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getBackgroundDataSetting()() ` *This method was deprecated in API level 15. As of `https://developer.android.com/reference/android/os/Build.VERSION_CODES#ICE_CREAM_SANDWICH`, availability of background data depends on several combined factors, and this method will always return `true`. Instead, when background data is unavailable, `https://developer.android.com/reference/android/net/ConnectivityManager#getActiveNetworkInfo()` will now appear disconnected.* |
| ` https://developer.android.com/reference/android/net/Network` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getBoundNetworkForProcess()() ` Returns the `https://developer.android.com/reference/android/net/Network` currently bound to this process via `https://developer.android.com/reference/android/net/ConnectivityManager#bindProcessToNetwork(android.net.Network)`, or `null` if no `https://developer.android.com/reference/android/net/Network` is explicitly bound. |
| ` int` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getConnectionOwnerUid(int,%20java.net.InetSocketAddress,%20java.net.InetSocketAddress)(int protocol, https://developer.android.com/reference/java/net/InetSocketAddress local, https://developer.android.com/reference/java/net/InetSocketAddress remote) ` Returns the `uid` of the owner of a network connection. |
| ` https://developer.android.com/reference/android/net/ProxyInfo` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getDefaultProxy()() ` Get the current default HTTP proxy settings. |
| ` https://developer.android.com/reference/android/net/LinkProperties` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getLinkProperties(android.net.Network)(https://developer.android.com/reference/android/net/Network network) ` Get the `https://developer.android.com/reference/android/net/LinkProperties` for the given `https://developer.android.com/reference/android/net/Network`. |
| ` int` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getMultipathPreference(android.net.Network)(https://developer.android.com/reference/android/net/Network network) ` Provides a hint to the calling application on whether it is desirable to use the multinetwork APIs (e.g., `https://developer.android.com/reference/android/net/Network#openConnection(java.net.URL)`, `https://developer.android.com/reference/android/net/Network#bindSocket(java.io.FileDescriptor)`, etc.) for multipath data transfer on this network when it is not the system default network. |
| ` https://developer.android.com/reference/android/net/NetworkCapabilities` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkCapabilities(android.net.Network)(https://developer.android.com/reference/android/net/Network network) ` Get the `https://developer.android.com/reference/android/net/NetworkCapabilities` for the given `https://developer.android.com/reference/android/net/Network`, or null. |
| ` https://developer.android.com/reference/android/net/NetworkInfo` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkInfo(int)(int networkType) ` *This method was deprecated in API level 23. This method does not support multiple connected networks of the same type. Use `https://developer.android.com/reference/android/net/ConnectivityManager#getAllNetworks()` and `https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkInfo(android.net.Network)` instead.* |
| ` https://developer.android.com/reference/android/net/NetworkInfo` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkInfo(android.net.Network)(https://developer.android.com/reference/android/net/Network network) ` *This method was deprecated in API level 29. See `https://developer.android.com/reference/android/net/NetworkInfo`.* |
| ` int` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkPreference()() ` *This method was deprecated in API level 21. Functionality has been removed as it no longer makes sense, with many more than two networks - we'd need an array to express preference. Instead we use dynamic network properties of the networks to describe their precedence.* |
| ` byte[]` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkWatchlistConfigHash()() ` The network watchlist is a list of domains and IP addresses that are associated with potentially harmful apps. |
| ` static https://developer.android.com/reference/android/net/Network` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getProcessDefaultNetwork()() ` *This method was deprecated in API level 23. Using this function can lead to other functions throwing `https://developer.android.com/reference/java/lang/IllegalStateException`. Use `https://developer.android.com/reference/android/net/ConnectivityManager#getBoundNetworkForProcess()` instead. `getBoundNetworkForProcess` is a direct replacement.* |
| ` int` | ` https://developer.android.com/reference/android/net/ConnectivityManager#getRestrictBackgroundStatus()() ` Determines if the calling application is subject to metered network restrictions while running on background. |
| ` boolean` | ` https://developer.android.com/reference/android/net/ConnectivityManager#isActiveNetworkMetered()() ` Returns if the currently active data network is metered. |
| ` boolean` | ` https://developer.android.com/reference/android/net/ConnectivityManager#isDefaultNetworkActive()() ` Return whether the data network is currently active. |
| ` static boolean` | ` https://developer.android.com/reference/android/net/ConnectivityManager#isNetworkTypeValid(int)(int networkType) ` *This method was deprecated in API level 23. All APIs accepting a network type are deprecated. There should be no need to validate a network type.* |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#registerBestMatchingNetworkCallback(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback,%20android.os.Handler)(https://developer.android.com/reference/android/net/NetworkRequest request, https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback networkCallback, https://developer.android.com/reference/android/os/Handler handler) ` Registers to receive notifications about the best matching network which satisfy the given `https://developer.android.com/reference/android/net/NetworkRequest`. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#registerDefaultNetworkCallback(android.net.ConnectivityManager.NetworkCallback)(https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback networkCallback) ` Registers to receive notifications about changes in the application's default network. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#registerDefaultNetworkCallback(android.net.ConnectivityManager.NetworkCallback,%20android.os.Handler)(https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback networkCallback, https://developer.android.com/reference/android/os/Handler handler) ` Registers to receive notifications about changes in the application's default network. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)(https://developer.android.com/reference/android/net/NetworkRequest request, https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback networkCallback) ` Registers to receive notifications about all networks which satisfy the given `https://developer.android.com/reference/android/net/NetworkRequest`. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.app.PendingIntent)(https://developer.android.com/reference/android/net/NetworkRequest request, https://developer.android.com/reference/android/app/PendingIntent operation) ` Registers a PendingIntent to be sent when a network is available which satisfies the given `https://developer.android.com/reference/android/net/NetworkRequest`. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback,%20android.os.Handler)(https://developer.android.com/reference/android/net/NetworkRequest request, https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback networkCallback, https://developer.android.com/reference/android/os/Handler handler) ` Registers to receive notifications about all networks which satisfy the given `https://developer.android.com/reference/android/net/NetworkRequest`. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#releaseNetworkRequest(android.app.PendingIntent)(https://developer.android.com/reference/android/app/PendingIntent operation) ` Removes a request made via `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)` This method has the same behavior as `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.app.PendingIntent)` with respect to releasing network resources and disconnecting. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#removeDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener)(https://developer.android.com/reference/android/net/ConnectivityManager.OnNetworkActiveListener l) ` Remove network active listener previously registered with `https://developer.android.com/reference/android/net/ConnectivityManager#addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener)`. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#reportBadNetwork(android.net.Network)(https://developer.android.com/reference/android/net/Network network) ` *This method was deprecated in API level 23. Use `https://developer.android.com/reference/android/net/ConnectivityManager#reportNetworkConnectivity(android.net.Network,%20boolean)` which allows reporting both working and non-working connectivity.* |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#reportNetworkConnectivity(android.net.Network,%20boolean)(https://developer.android.com/reference/android/net/Network network, boolean hasConnectivity) ` Report to the framework whether a network has working connectivity. |
| ` boolean` | ` https://developer.android.com/reference/android/net/ConnectivityManager#requestBandwidthUpdate(android.net.Network)(https://developer.android.com/reference/android/net/Network network) ` Requests bandwidth update for a given `https://developer.android.com/reference/android/net/Network` and returns whether the update request is accepted by ConnectivityService. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)(https://developer.android.com/reference/android/net/NetworkRequest request, https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback networkCallback) ` Request a network to satisfy a set of `https://developer.android.com/reference/android/net/NetworkCapabilities`. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback,%20int)(https://developer.android.com/reference/android/net/NetworkRequest request, https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback networkCallback, int timeoutMs) ` Request a network to satisfy a set of `https://developer.android.com/reference/android/net/NetworkCapabilities`, limited by a timeout. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback,%20android.os.Handler)(https://developer.android.com/reference/android/net/NetworkRequest request, https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback networkCallback, https://developer.android.com/reference/android/os/Handler handler) ` Request a network to satisfy a set of `https://developer.android.com/reference/android/net/NetworkCapabilities`. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)(https://developer.android.com/reference/android/net/NetworkRequest request, https://developer.android.com/reference/android/app/PendingIntent operation) ` Request a network to satisfy a set of `https://developer.android.com/reference/android/net/NetworkCapabilities`. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback,%20android.os.Handler,%20int)(https://developer.android.com/reference/android/net/NetworkRequest request, https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback networkCallback, https://developer.android.com/reference/android/os/Handler handler, int timeoutMs) ` Request a network to satisfy a set of `https://developer.android.com/reference/android/net/NetworkCapabilities`, limited by a timeout. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#reserveNetwork(android.net.NetworkRequest,%20android.os.Handler,%20android.net.ConnectivityManager.NetworkCallback)(https://developer.android.com/reference/android/net/NetworkRequest request, https://developer.android.com/reference/android/os/Handler handler, https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback networkCallback) ` Reserve a network to satisfy a set of `https://developer.android.com/reference/android/net/NetworkCapabilities`. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#setNetworkPreference(int)(int preference) ` *This method was deprecated in API level 21. Functionality has been removed as it no longer makes sense, with many more than two networks - we'd need an array to express preference. Instead we use dynamic network properties of the networks to describe their precedence.* |
| ` static boolean` | ` https://developer.android.com/reference/android/net/ConnectivityManager#setProcessDefaultNetwork(android.net.Network)(https://developer.android.com/reference/android/net/Network network) ` *This method was deprecated in API level 23. This function can throw `https://developer.android.com/reference/java/lang/IllegalStateException`. Use `https://developer.android.com/reference/android/net/ConnectivityManager#bindProcessToNetwork(android.net.Network)` instead. `bindProcessToNetwork` is a direct replacement.* |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)(https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback networkCallback) ` Unregisters a `NetworkCallback` and possibly releases networks originating from `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` and `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` calls. |
| ` void` | ` https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.app.PendingIntent)(https://developer.android.com/reference/android/app/PendingIntent operation) ` Unregisters a callback previously registered via `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.app.PendingIntent)`. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.

## Constants

### ACTION_BACKGROUND_DATA_SETTING_CHANGED

Added in [API level 3](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED
```

<br />

**This constant was deprecated in API level 16.**   

As of `https://developer.android.com/reference/android/os/Build.VERSION_CODES#ICE_CREAM_SANDWICH`, availability of background data depends on several combined factors, and this broadcast is no longer sent. Instead, when background data is unavailable, `https://developer.android.com/reference/android/net/ConnectivityManager#getActiveNetworkInfo()` will now appear disconnected. During first boot after a platform upgrade, this broadcast will be sent once if `https://developer.android.com/reference/android/net/ConnectivityManager#getBackgroundDataSetting()` was `false` before the upgrade.

Broadcast Action: The setting for background data usage has changed values. Use `https://developer.android.com/reference/android/net/ConnectivityManager#getBackgroundDataSetting()` to get the current value.

If an application uses the network in the background, it should listen for this broadcast and stop using the background data if the value is `false`.

<br />

<br />

Constant Value: "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED"

### ACTION_CAPTIVE_PORTAL_SIGN_IN

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String ACTION_CAPTIVE_PORTAL_SIGN_IN
```

The device has connected to a network that has presented a captive portal, which is blocking Internet connectivity. The user was presented with a notification that network sign in is required, and the user invoked the notification's action indicating they desire to sign in to the network. Apps handling this activity should facilitate signing in to the network. This action includes a `https://developer.android.com/reference/android/net/Network` typed extra called `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_NETWORK` that represents the network presenting the captive portal; all communication with the captive portal must be done using this `Network` object.

<br />

This activity includes a `https://developer.android.com/reference/android/net/CaptivePortal` extra named `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_CAPTIVE_PORTAL` that can be used to indicate different outcomes of the captive portal sign in to the system:

- When the app handling this action believes the user has signed in to the network and the captive portal has been dismissed, the app should call `https://developer.android.com/reference/android/net/CaptivePortal#reportCaptivePortalDismissed()` so the system can reevaluate the network. If reevaluation finds the network no longer subject to a captive portal, the network may become the default active data network.
- When the app handling this action believes the user explicitly wants to ignore the captive portal and the network, the app should call `https://developer.android.com/reference/android/net/CaptivePortal#ignoreNetwork()`.

<br />

<br />

Constant Value: "android.net.conn.CAPTIVE_PORTAL"

### ACTION_RESTRICT_BACKGROUND_CHANGED

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String ACTION_RESTRICT_BACKGROUND_CHANGED
```

A change in the background metered network activity restriction has occurred.

Applications should call `https://developer.android.com/reference/android/net/ConnectivityManager#getRestrictBackgroundStatus()` to check if the restriction applies to them.

This is only sent to registered receivers, not manifest receivers.

<br />

Constant Value: "android.net.conn.RESTRICT_BACKGROUND_CHANGED"

### CONNECTIVITY_ACTION

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String CONNECTIVITY_ACTION
```

<br />

**This constant was deprecated in API level 28.**   

apps should use the more versatile `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)`, `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.app.PendingIntent)` or `https://developer.android.com/reference/android/net/ConnectivityManager#registerDefaultNetworkCallback(android.net.ConnectivityManager.NetworkCallback)` functions instead for faster and more detailed updates about the network changes they care about.

A change in network connectivity has occurred. A default connection has either been established or lost. The NetworkInfo for the affected network is sent as an extra; it should be consulted to see what kind of connectivity event occurred.

<br />

Apps targeting Android 7.0 (API level 24) and higher do not receive this broadcast if they declare the broadcast receiver in their manifest. Apps will still receive broadcasts if they register their `https://developer.android.com/reference/android/content/BroadcastReceiver` with `https://developer.android.com/reference/android/content/Context#registerReceiver(android.content.BroadcastReceiver,%20android.content.IntentFilter)` and that context is still valid.

<br />

If this is a connection that was the result of failing over from a disconnected network, then the FAILOVER_CONNECTION boolean extra is set to true.

<br />

For a loss of connectivity, if the connectivity manager is attempting to connect (or has already connected) to another network, the NetworkInfo for the new network is also passed as an extra. This lets any receivers of the broadcast know that they should not necessarily tell the user that no data traffic will be possible. Instead, the receiver should expect another broadcast soon, indicating either that the failover attempt succeeded (and so there is still overall data connectivity), or that the failover attempt failed, meaning that all connectivity has been lost.

<br />

For a disconnect event, the boolean extra EXTRA_NO_CONNECTIVITY is set to `true` if there are no connected networks at all.

<br />

Note that this broadcast is deprecated and generally tries to implement backwards compatibility with older versions of Android. As such, it may not reflect new capabilities of the system, like multiple networks being connected at the same time, the details of newer technology, or changes in tethering state.

<br />

<br />

Constant Value: "android.net.conn.CONNECTIVITY_CHANGE"

### DEFAULT_NETWORK_PREFERENCE

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 18](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int DEFAULT_NETWORK_PREFERENCE
```

<br />

**This constant was deprecated in API level 18.**   

Since we support so many more networks now, the single network default network preference can't really express the hierarchy. Instead, the default is defined by the networkAttributes in config.xml. You can determine the current value by calling `https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkPreference()` from an App.

If you want to set the default network preference,you can directly change the networkAttributes array in framework's config.xml.

<br />

Constant Value: 1 (0x00000001)

### EXTRA_CAPTIVE_PORTAL

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String EXTRA_CAPTIVE_PORTAL
```

The lookup key for a `https://developer.android.com/reference/android/net/CaptivePortal` object included with the `https://developer.android.com/reference/android/net/ConnectivityManager#ACTION_CAPTIVE_PORTAL_SIGN_IN` intent. The `CaptivePortal` object can be used to either indicate to the system that the captive portal has been dismissed or that the user does not want to pursue signing in to captive portal. Retrieve it with `https://developer.android.com/reference/android/content/Intent#getParcelableExtra(java.lang.String)`.

<br />

Constant Value: "android.net.extra.CAPTIVE_PORTAL"

### EXTRA_CAPTIVE_PORTAL_URL

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String EXTRA_CAPTIVE_PORTAL_URL
```

Key for passing a URL to the captive portal login activity.

<br />

Constant Value: "android.net.extra.CAPTIVE_PORTAL_URL"

### EXTRA_EXTRA_INFO

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String EXTRA_EXTRA_INFO
```

<br />

**This constant was deprecated in API level 29.**   

See `https://developer.android.com/reference/android/net/NetworkInfo#getExtraInfo()`.

The lookup key for a string that provides optionally supplied extra information about the network state. The information may be passed up from the lower networking layers, and its meaning may be specific to a particular network type. Retrieve it with `https://developer.android.com/reference/android/content/Intent#getStringExtra(java.lang.String)`.

<br />

Constant Value: "extraInfo"

### EXTRA_IS_FAILOVER

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String EXTRA_IS_FAILOVER
```

<br />

**This constant was deprecated in API level 29.**   

See `https://developer.android.com/reference/android/net/NetworkInfo`.

The lookup key for a boolean that indicates whether a connect event is for a network to which the connectivity manager was failing over following a disconnect on another network. Retrieve it with `https://developer.android.com/reference/android/content/Intent#getBooleanExtra(java.lang.String,%20boolean)`.

<br />

Constant Value: "isFailover"

### EXTRA_NETWORK

Added in [API level 22](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String EXTRA_NETWORK
```

The lookup key for a `https://developer.android.com/reference/android/net/Network` object included with the intent after successfully finding a network for the applications request. Retrieve it with `https://developer.android.com/reference/android/content/Intent#getParcelableExtra(java.lang.String)`.

Note that if you intend to invoke `https://developer.android.com/reference/android/net/Network#openConnection(java.net.URL)` then you must get a ConnectivityManager instance before doing so.

<br />

Constant Value: "android.net.extra.NETWORK"

### EXTRA_NETWORK_INFO

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 15](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String EXTRA_NETWORK_INFO
```

<br />

**This constant was deprecated in API level 15.**   

The `https://developer.android.com/reference/android/net/NetworkInfo` object is deprecated, as many of its properties can't accurately represent modern network characteristics. Please obtain information about networks from the `https://developer.android.com/reference/android/net/NetworkCapabilities` or `https://developer.android.com/reference/android/net/LinkProperties` objects instead.

The lookup key for a `https://developer.android.com/reference/android/net/NetworkInfo` object. Retrieve with `https://developer.android.com/reference/android/content/Intent#getParcelableExtra(java.lang.String)`.

<br />

Constant Value: "networkInfo"

### EXTRA_NETWORK_REQUEST

Added in [API level 22](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String EXTRA_NETWORK_REQUEST
```

The lookup key for a `https://developer.android.com/reference/android/net/NetworkRequest` object included with the intent after successfully finding a network for the applications request. Retrieve it with `https://developer.android.com/reference/android/content/Intent#getParcelableExtra(java.lang.String)`.

<br />

Constant Value: "android.net.extra.NETWORK_REQUEST"

### EXTRA_NETWORK_TYPE

Added in [API level 17](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String EXTRA_NETWORK_TYPE
```

<br />

**This constant was deprecated in API level 29.**   

The network type is not rich enough to represent the characteristics of modern networks. Please use `https://developer.android.com/reference/android/net/NetworkCapabilities` instead, in particular the transports.

Network type which triggered a `https://developer.android.com/reference/android/net/ConnectivityManager#CONNECTIVITY_ACTION` broadcast.

<br />

**See also:**

- `https://developer.android.com/reference/android/content/Intent#getIntExtra(java.lang.String,%20int)`

Constant Value: "networkType"

### EXTRA_NO_CONNECTIVITY

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String EXTRA_NO_CONNECTIVITY
```

The lookup key for a boolean that indicates whether there is a complete lack of connectivity, i.e., no network is available. Retrieve it with `https://developer.android.com/reference/android/content/Intent#getBooleanExtra(java.lang.String,%20boolean)`.

<br />

Constant Value: "noConnectivity"

### EXTRA_OTHER_NETWORK_INFO

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String EXTRA_OTHER_NETWORK_INFO
```

<br />

**This constant was deprecated in API level 29.**   

See `https://developer.android.com/reference/android/net/NetworkInfo`.

The lookup key for a `https://developer.android.com/reference/android/net/NetworkInfo` object. This is supplied when there is another network that it may be possible to connect to. Retrieve with `https://developer.android.com/reference/android/content/Intent#getParcelableExtra(java.lang.String)`.

<br />

Constant Value: "otherNetwork"

### EXTRA_REASON

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String EXTRA_REASON
```

The lookup key for a string that indicates why an attempt to connect to a network failed. The string has no particular structure. It is intended to be used in notifications presented to users. Retrieve it with `https://developer.android.com/reference/android/content/Intent#getStringExtra(java.lang.String)`.

<br />

Constant Value: "reason"

### MULTIPATH_PREFERENCE_HANDOVER

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int MULTIPATH_PREFERENCE_HANDOVER
```

It is acceptable to briefly use multipath data to provide seamless connectivity for time-sensitive user-facing operations when the system default network is temporarily unresponsive. The amount of data should be limited (less than one megabyte for every call to this method), and the operation should be infrequent to ensure that data usage is limited. An example of such an operation might be a time-sensitive foreground activity, such as a voice command, that the user is performing while walking out of range of a Wi-Fi network.

<br />

Constant Value: 1 (0x00000001)

### MULTIPATH_PREFERENCE_PERFORMANCE

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int MULTIPATH_PREFERENCE_PERFORMANCE
```

It is acceptable to use metered data to improve network latency and performance.

<br />

Constant Value: 4 (0x00000004)

### MULTIPATH_PREFERENCE_RELIABILITY

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int MULTIPATH_PREFERENCE_RELIABILITY
```

It is acceptable to use small amounts of multipath data on an ongoing basis to provide a backup channel for traffic that is primarily going over another network. An example might be maintaining backup connections to peers or servers for the purpose of fast fallback if the default network is temporarily unresponsive or disconnects. The traffic on backup paths should be negligible compared to the traffic on the main path.

<br />

Constant Value: 2 (0x00000002)

### RESTRICT_BACKGROUND_STATUS_DISABLED

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int RESTRICT_BACKGROUND_STATUS_DISABLED
```

Device is not restricting metered network activity while application is running on background.

<br />

Constant Value: 1 (0x00000001)

### RESTRICT_BACKGROUND_STATUS_ENABLED

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int RESTRICT_BACKGROUND_STATUS_ENABLED
```

Device is restricting metered network activity while application is running on background.

In this state, application should not try to use the network while running on background, because it would be denied.

<br />

Constant Value: 3 (0x00000003)

### RESTRICT_BACKGROUND_STATUS_WHITELISTED

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED
```

Device is restricting metered network activity while application is running on background, but application is allowed to bypass it.

In this state, application should take action to mitigate metered network access. For example, a music streaming application should switch to a low-bandwidth bitrate.

<br />

Constant Value: 2 (0x00000002)

### TYPE_BLUETOOTH

Added in [API level 13](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int TYPE_BLUETOOTH
```

<br />

**This constant was deprecated in API level 28.**   

Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request an appropriate network. See `https://developer.android.com/reference/android/net/NetworkCapabilities` for supported transports.

A Bluetooth data connection.

<br />

Constant Value: 7 (0x00000007)

### TYPE_DUMMY

Added in [API level 14](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int TYPE_DUMMY
```

<br />

**This constant was deprecated in API level 28.**   

This is not used any more.

Fake data connection. This should not be used on shipping devices.

<br />

Constant Value: 8 (0x00000008)

### TYPE_ETHERNET

Added in [API level 13](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int TYPE_ETHERNET
```

<br />

**This constant was deprecated in API level 28.**   

Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request an appropriate network. See `https://developer.android.com/reference/android/net/NetworkCapabilities` for supported transports.

An Ethernet data connection.

<br />

Constant Value: 9 (0x00000009)

### TYPE_MOBILE

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int TYPE_MOBILE
```

<br />

**This constant was deprecated in API level 28.**   

Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request an appropriate network. See `https://developer.android.com/reference/android/net/NetworkCapabilities` for supported transports.

A Mobile data connection. Devices may support more than one.

<br />

Constant Value: 0 (0x00000000)

### TYPE_MOBILE_DUN

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int TYPE_MOBILE_DUN
```

<br />

**This constant was deprecated in API level 28.**   

Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasCapability(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request a network that provides the `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_DUN` capability.

A DUN-specific Mobile data connection. This network type may use the same network interface as `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_MOBILE` or it may use a different one. This is sometimes by the system when setting up an upstream connection for tethering so that the carrier is aware of DUN traffic.

<br />

Constant Value: 4 (0x00000004)

### TYPE_MOBILE_HIPRI

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int TYPE_MOBILE_HIPRI
```

<br />

**This constant was deprecated in API level 23.**   

Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request an appropriate network. See `https://developer.android.com/reference/android/net/NetworkCapabilities` for supported transports.

A High Priority Mobile data connection. This network type uses the same network interface as `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_MOBILE` but the routing setup is different.

<br />

Constant Value: 5 (0x00000005)

### TYPE_MOBILE_MMS

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int TYPE_MOBILE_MMS
```

<br />

**This constant was deprecated in API level 23.**   

Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasCapability(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request a network that provides the `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_MMS` capability.

An MMS-specific Mobile data connection. This network type may use the same network interface as `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_MOBILE` or it may use a different one. This is used by applications needing to talk to the carrier's Multimedia Messaging Service servers.

<br />

Constant Value: 2 (0x00000002)

### TYPE_MOBILE_SUPL

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int TYPE_MOBILE_SUPL
```

<br />

**This constant was deprecated in API level 23.**   

Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasCapability(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request a network that provides the `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_SUPL` capability.

A SUPL-specific Mobile data connection. This network type may use the same network interface as `https://developer.android.com/reference/android/net/ConnectivityManager#TYPE_MOBILE` or it may use a different one. This is used by applications needing to talk to the carrier's Secure User Plane Location servers for help locating the device.

<br />

Constant Value: 3 (0x00000003)

### TYPE_VPN

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int TYPE_VPN
```

<br />

**This constant was deprecated in API level 28.**   

Applications should use `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_VPN` instead.

A virtual network using one or more native bearers. It may or may not be providing security services.

<br />

Constant Value: 17 (0x00000011)

### TYPE_WIFI

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int TYPE_WIFI
```

<br />

**This constant was deprecated in API level 28.**   

Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request an appropriate network. See `https://developer.android.com/reference/android/net/NetworkCapabilities` for supported transports.

A WIFI data connection. Devices may support more than one.

<br />

Constant Value: 1 (0x00000001)

### TYPE_WIMAX

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int TYPE_WIMAX
```

<br />

**This constant was deprecated in API level 28.**   

Applications should instead use `https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)` or `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to request an appropriate network. See `https://developer.android.com/reference/android/net/NetworkCapabilities` for supported transports.

A WiMAX data connection.

<br />

Constant Value: 6 (0x00000006)

## Public methods

### addDefaultNetworkActiveListener

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void addDefaultNetworkActiveListener (ConnectivityManager.OnNetworkActiveListener l)
```

Start listening to reports when the system's default data network is active, meaning it is a good time to perform network traffic. Use `https://developer.android.com/reference/android/net/ConnectivityManager#isDefaultNetworkActive()` to determine the current state of the system's default network after registering the listener.

If the process default network has been set with `https://developer.android.com/reference/android/net/ConnectivityManager#bindProcessToNetwork(android.net.Network)` this function will not reflect the process's default, but the system default.

<br />

| Parameters ||
|---|---|
| `l` | `ConnectivityManager.OnNetworkActiveListener`: The listener to be told when the network is active. <br /> |

### bindProcessToNetwork

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean bindProcessToNetwork (Network network)
```

Binds the current process to `network`. All Sockets created in the future (and not explicitly bound via a bound SocketFactory from `https://developer.android.com/reference/android/net/Network#getSocketFactory()`) will be bound to `network`. All host name resolutions will be limited to `network` as well. Note that if `network` ever disconnects, all Sockets created in this way will cease to work and all host name resolutions will fail. This is by design so an application doesn't accidentally use Sockets it thinks are still bound to a particular `https://developer.android.com/reference/android/net/Network`. To clear binding pass `null` for `network`. Using individually bound Sockets created by Network.getSocketFactory().createSocket() and performing network-specific host name resolutions via `https://developer.android.com/reference/android/net/Network#getAllByName(java.lang.String)` is preferred to calling `bindProcessToNetwork`.

<br />

| Parameters ||
|---|---|
| `network` | `Network`: The `https://developer.android.com/reference/android/net/Network` to bind the current process to, or `null` to clear the current binding. <br /> |

| Returns ||
|---|---|
| `boolean` | `true` on success, `false` if the `https://developer.android.com/reference/android/net/Network` is no longer valid. <br /> |

### createSocketKeepalive

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SocketKeepalive createSocketKeepalive (Network network, 
                IpSecManager.UdpEncapsulationSocket socket, 
                InetAddress source, 
                InetAddress destination, 
                Executor executor, 
                SocketKeepalive.Callback callback)
```

Request that keepalives be started on a IPsec NAT-T socket.

<br />

| Parameters ||
|---|---|
| `network` | `Network`: The `https://developer.android.com/reference/android/net/Network` the socket is on. This value cannot be `null`. <br /> |
| `socket` | `IpSecManager.UdpEncapsulationSocket`: The socket that needs to be kept alive. This value cannot be `null`. <br /> |
| `source` | `InetAddress`: The source address of the `https://developer.android.com/reference/android/net/IpSecManager.UdpEncapsulationSocket`. This value cannot be `null`. <br /> |
| `destination` | `InetAddress`: The destination address of the `https://developer.android.com/reference/android/net/IpSecManager.UdpEncapsulationSocket`. This value cannot be `null`. <br /> |
| `executor` | `Executor`: The executor on which callback will be invoked. The provided `https://developer.android.com/reference/java/util/concurrent/Executor` must run callback sequentially, otherwise the order of callbacks cannot be guaranteed. This value cannot be `null`. Callback and listener events are dispatched through this `https://developer.android.com/reference/java/util/concurrent/Executor`, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use `https://developer.android.com/reference/android/content/Context#getMainExecutor()`. Otherwise, provide an `https://developer.android.com/reference/java/util/concurrent/Executor` that dispatches to an appropriate thread. <br /> |
| `callback` | `SocketKeepalive.Callback`: A `https://developer.android.com/reference/android/net/SocketKeepalive.Callback`. Used for notifications about keepalive changes. Must be extended by applications that use this API. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/SocketKeepalive` | A `https://developer.android.com/reference/android/net/SocketKeepalive` object that can be used to control the keepalive on the given socket. This value cannot be `null`. <br /> |

### getActiveNetwork

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Network getActiveNetwork ()
```

Returns a `https://developer.android.com/reference/android/net/Network` object corresponding to the currently active default data network. In the event that the current active default data network disconnects, the returned `Network` object will no longer be usable. This will return `null` when there is no default network, or when the default network is blocked.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/Network` | a `https://developer.android.com/reference/android/net/Network` object for the current default network or `null` if no default network is currently active or if the default network is blocked for the caller <br /> |

### getActiveNetworkInfo

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public NetworkInfo getActiveNetworkInfo ()
```

<br />

**This method was deprecated in API level 29.**   

See `https://developer.android.com/reference/android/net/NetworkInfo`.

Returns details about the currently active default data network. When connected, this network is the default route for outgoing connections. You should always check `https://developer.android.com/reference/android/net/NetworkInfo#isConnected()` before initiating network traffic. This may return `null` when there is no default network. Note that if the default network is a VPN, this method will return the NetworkInfo for one of its underlying networks instead, or null if the VPN agent did not specify any. Apps interested in learning about VPNs should use `https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkInfo(android.net.Network)` instead.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/NetworkInfo` | a `https://developer.android.com/reference/android/net/NetworkInfo` object for the current default network or `null` if no default network is currently active <br /> |

### getAllNetworkInfo

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public NetworkInfo[] getAllNetworkInfo ()
```

<br />

**This method was deprecated in API level 23.**   

This method does not support multiple connected networks of the same type. Use `https://developer.android.com/reference/android/net/ConnectivityManager#getAllNetworks()` and `https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkInfo(android.net.Network)` instead.

Returns connection status information about all network types supported by the device.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/NetworkInfo` | an array of `https://developer.android.com/reference/android/net/NetworkInfo` objects. Check each `https://developer.android.com/reference/android/net/NetworkInfo#getType()` for which type each applies. This value cannot be `null`. <br /> |

### getAllNetworks

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Network[] getAllNetworks ()
```

<br />

**This method was deprecated in API level 31.**   

This method does not provide any notification of network state changes, forcing apps to call it repeatedly. This is inefficient and prone to race conditions. Apps should use methods such as `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` instead. Apps that desire to obtain information about networks that do not apply to them can use `https://developer.android.com/reference/android/net/NetworkRequest.Builder#setIncludeOtherUidNetworks(boolean)`.

Returns an array of all `https://developer.android.com/reference/android/net/Network` currently tracked by the framework.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/Network` | an array of `https://developer.android.com/reference/android/net/Network` objects. This value cannot be `null`. <br /> |

### getBackgroundDataSetting

Added in [API level 3](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 15](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean getBackgroundDataSetting ()
```

<br />

**This method was deprecated in API level 15.**   

As of `https://developer.android.com/reference/android/os/Build.VERSION_CODES#ICE_CREAM_SANDWICH`, availability of background data depends on several combined factors, and this method will always return `true`. Instead, when background data is unavailable, `https://developer.android.com/reference/android/net/ConnectivityManager#getActiveNetworkInfo()` will now appear disconnected.

Returns the value of the setting for background data usage. If false, applications should not use the network if the application is not in the foreground. Developers should respect this setting, and check the value of this before performing any background data operations.

All applications that have background services that use the network should listen to `https://developer.android.com/reference/android/net/ConnectivityManager#ACTION_BACKGROUND_DATA_SETTING_CHANGED`.

<br />

<br />

| Returns ||
|---|---|
| `boolean` | Whether background data usage is allowed. <br /> |

### getBoundNetworkForProcess

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Network getBoundNetworkForProcess ()
```

Returns the `https://developer.android.com/reference/android/net/Network` currently bound to this process via `https://developer.android.com/reference/android/net/ConnectivityManager#bindProcessToNetwork(android.net.Network)`, or `null` if no `https://developer.android.com/reference/android/net/Network` is explicitly bound.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/Network` | `Network` to which this process is bound, or `null`. <br /> |

### getConnectionOwnerUid

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getConnectionOwnerUid (int protocol, 
                InetSocketAddress local, 
                InetSocketAddress remote)
```

Returns the `uid` of the owner of a network connection.

<br />

| Parameters ||
|---|---|
| `protocol` | `int`: The protocol of the connection. Only `IPPROTO_TCP` and `IPPROTO_UDP` currently supported. <br /> |
| `local` | `InetSocketAddress`: The local `https://developer.android.com/reference/java/net/InetSocketAddress` of a connection. This value cannot be `null`. <br /> |
| `remote` | `InetSocketAddress`: The remote `https://developer.android.com/reference/java/net/InetSocketAddress` of a connection. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `int` | `uid` if the connection is found and the app has permission to observe it (e.g., if it is associated with the calling VPN app's VpnService tunnel) or `https://developer.android.com/reference/android/os/Process#INVALID_UID` if the connection is not found. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if an unsupported protocol is requested. |
| `https://developer.android.com/reference/java/lang/SecurityException` | if the caller is not the active VpnService for the current user. |

### getDefaultProxy

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ProxyInfo getDefaultProxy ()
```

Get the current default HTTP proxy settings. If a global proxy is set it will be returned, otherwise if this process is bound to a `https://developer.android.com/reference/android/net/Network` using `https://developer.android.com/reference/android/net/ConnectivityManager#bindProcessToNetwork(android.net.Network)` then that `Network`'s proxy is returned, otherwise the default network's proxy is returned.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/ProxyInfo` | the `https://developer.android.com/reference/android/net/ProxyInfo` for the current HTTP proxy, or `null` if no HTTP proxy is active. <br /> |

### getLinkProperties

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public LinkProperties getLinkProperties (Network network)
```

Get the `https://developer.android.com/reference/android/net/LinkProperties` for the given `https://developer.android.com/reference/android/net/Network`. This will return `null` if the network is unknown.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Parameters ||
|---|---|
| `network` | `Network`: The `https://developer.android.com/reference/android/net/Network` object identifying the network in question. This value may be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/LinkProperties` | The `https://developer.android.com/reference/android/net/LinkProperties` for the network, or `null`. <br /> |

### getMultipathPreference

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getMultipathPreference (Network network)
```

Provides a hint to the calling application on whether it is desirable to use the multinetwork APIs (e.g., `https://developer.android.com/reference/android/net/Network#openConnection(java.net.URL)`, `https://developer.android.com/reference/android/net/Network#bindSocket(java.io.FileDescriptor)`, etc.) for multipath data transfer on this network when it is not the system default network. Applications desiring to use multipath network protocols should call this method before each such operation.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Parameters ||
|---|---|
| `network` | `Network`: The network on which the application desires to use multipath data. If `null`, this method will return a preference that will generally apply to metered networks. <br /> |

| Returns ||
|---|---|
| `int` | a bitwise OR of zero or more of the `MULTIPATH_PREFERENCE_*` constants. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/net/ConnectivityManager#MULTIPATH_PREFERENCE_HANDOVER` - `https://developer.android.com/reference/android/net/ConnectivityManager#MULTIPATH_PREFERENCE_RELIABILITY` - `https://developer.android.com/reference/android/net/ConnectivityManager#MULTIPATH_PREFERENCE_PERFORMANCE` |

### getNetworkCapabilities

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public NetworkCapabilities getNetworkCapabilities (Network network)
```

Get the `https://developer.android.com/reference/android/net/NetworkCapabilities` for the given `https://developer.android.com/reference/android/net/Network`, or null. This will remove any location sensitive data in the returned `https://developer.android.com/reference/android/net/NetworkCapabilities`. Some `https://developer.android.com/reference/android/net/TransportInfo` instances like `https://developer.android.com/reference/android/net/wifi/WifiInfo` contain location sensitive information. To retrieve this location sensitive information (subject to the caller's location permissions), use a `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` with the `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#FLAG_INCLUDE_LOCATION_INFO` flag instead. This method returns `null` if the network is unknown or if the \|network\| argument is null.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Parameters ||
|---|---|
| `network` | `Network`: The `https://developer.android.com/reference/android/net/Network` object identifying the network in question. This value may be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/NetworkCapabilities` | The `https://developer.android.com/reference/android/net/NetworkCapabilities` for the network, or `null`. <br /> |

### getNetworkInfo

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public NetworkInfo getNetworkInfo (int networkType)
```

<br />

**This method was deprecated in API level 23.**   

This method does not support multiple connected networks of the same type. Use `https://developer.android.com/reference/android/net/ConnectivityManager#getAllNetworks()` and `https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkInfo(android.net.Network)` instead.

Returns connection status information about a particular network type.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Parameters ||
|---|---|
| `networkType` | `int`: integer specifying which networkType in which you're interested. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/NetworkInfo` | a `https://developer.android.com/reference/android/net/NetworkInfo` object for the requested network type or `null` if the type is not supported by the device. If `networkType` is TYPE_VPN and a VPN is active for the calling app, then this method will try to return one of the underlying networks for the VPN or null if the VPN agent didn't specify any. <br /> |

### getNetworkInfo

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public NetworkInfo getNetworkInfo (Network network)
```

<br />

**This method was deprecated in API level 29.**   

See `https://developer.android.com/reference/android/net/NetworkInfo`.

Returns connection status information about a particular Network.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Parameters ||
|---|---|
| `network` | `Network`: `https://developer.android.com/reference/android/net/Network` specifying which network in which you're interested. This value may be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/NetworkInfo` | a `https://developer.android.com/reference/android/net/NetworkInfo` object for the requested network or `null` if the `Network` is not valid. <br /> |

### getNetworkPreference

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getNetworkPreference ()
```

<br />

**This method was deprecated in API level 21.**   

Functionality has been removed as it no longer makes sense, with many more than two networks - we'd need an array to express preference. Instead we use dynamic network properties of the networks to describe their precedence.

Retrieves the current preferred network type.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Returns ||
|---|---|
| `int` | an integer representing the preferred network type <br /> |

### getNetworkWatchlistConfigHash

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public byte[] getNetworkWatchlistConfigHash ()
```

The network watchlist is a list of domains and IP addresses that are associated with potentially harmful apps. This method returns the SHA-256 of the watchlist config file currently used by the system for validation purposes.

<br />

| Returns ||
|---|---|
| `byte[]` | Hash of network watchlist config file. Null if config does not exist. This value may be `null`. <br /> |

### getProcessDefaultNetwork

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static Network getProcessDefaultNetwork ()
```

<br />

**This method was deprecated in API level 23.**   

Using this function can lead to other functions throwing `https://developer.android.com/reference/java/lang/IllegalStateException`. Use `https://developer.android.com/reference/android/net/ConnectivityManager#getBoundNetworkForProcess()` instead. `getBoundNetworkForProcess` is a direct replacement.

Returns the `https://developer.android.com/reference/android/net/Network` currently bound to this process via `https://developer.android.com/reference/android/net/ConnectivityManager#bindProcessToNetwork(android.net.Network)`, or `null` if no `https://developer.android.com/reference/android/net/Network` is explicitly bound.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/Network` | `Network` to which this process is bound, or `null`. <br /> |

### getRestrictBackgroundStatus

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getRestrictBackgroundStatus ()
```

Determines if the calling application is subject to metered network restrictions while running on background.

<br />

| Returns ||
|---|---|
| `int` | `https://developer.android.com/reference/android/net/ConnectivityManager#RESTRICT_BACKGROUND_STATUS_DISABLED`, `https://developer.android.com/reference/android/net/ConnectivityManager#RESTRICT_BACKGROUND_STATUS_ENABLED`, or `https://developer.android.com/reference/android/net/ConnectivityManager#RESTRICT_BACKGROUND_STATUS_WHITELISTED` Value is one of the following: - `https://developer.android.com/reference/android/net/ConnectivityManager#RESTRICT_BACKGROUND_STATUS_DISABLED` - `https://developer.android.com/reference/android/net/ConnectivityManager#RESTRICT_BACKGROUND_STATUS_WHITELISTED` - `https://developer.android.com/reference/android/net/ConnectivityManager#RESTRICT_BACKGROUND_STATUS_ENABLED` |

### isActiveNetworkMetered

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean isActiveNetworkMetered ()
```

Returns if the currently active data network is metered. A network is classified as metered when the user is sensitive to heavy data usage on that connection due to monetary costs, data limitations or battery/performance issues. You should check this before doing large data transfers, and warn the user or delay the operation until another network is available.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Returns ||
|---|---|
| `boolean` | `true` if large transfers should be avoided, otherwise `false`. <br /> |

### isDefaultNetworkActive

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean isDefaultNetworkActive ()
```

Return whether the data network is currently active. An active network means that it is currently in a high power state for performing data transmission. On some types of networks, it may be expensive to move and stay in such a state, so it is more power efficient to batch network traffic together when the radio is already in this state. This method tells you whether right now is currently a good time to initiate network traffic, as the network is already active.

<br />

| Returns ||
|---|---|
| `boolean` | <br /> |

### isNetworkTypeValid

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static boolean isNetworkTypeValid (int networkType)
```

<br />

**This method was deprecated in API level 23.**   

All APIs accepting a network type are deprecated. There should be no need to validate a network type.

Tests if a given integer represents a valid network type.

<br />

| Parameters ||
|---|---|
| `networkType` | `int`: the type to be tested <br /> |

| Returns ||
|---|---|
| `boolean` | `true` if the type is valid, else `false` <br /> |

### registerBestMatchingNetworkCallback

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void registerBestMatchingNetworkCallback (NetworkRequest request, 
                ConnectivityManager.NetworkCallback networkCallback, 
                Handler handler)
```

Registers to receive notifications about the best matching network which satisfy the given `https://developer.android.com/reference/android/net/NetworkRequest`. The callbacks will continue to be called until either the application exits or `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)` is called.

To avoid performance issues due to apps leaking callbacks, the system will limit the number of outstanding requests to 100 per app (identified by their UID), shared with `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.app.PendingIntent)` and its variants and `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)` as well as `https://developer.android.com/reference/android/net/ConnectivityDiagnosticsManager#registerConnectivityDiagnosticsCallback(android.net.NetworkRequest,%20java.util.concurrent.Executor,%20android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback)`. Requesting a network with this method will count toward this limit. If this limit is exceeded, an exception will be thrown. To avoid hitting this issue and to conserve resources, make sure to unregister the callbacks with `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)`.

<br />

| Parameters ||
|---|---|
| `request` | `NetworkRequest`: `https://developer.android.com/reference/android/net/NetworkRequest` describing this request. This value cannot be `null`. <br /> |
| `networkCallback` | `ConnectivityManager.NetworkCallback`: The `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` that the system will call as suitable networks change state. This value cannot be `null`. <br /> |
| `handler` | `Handler`: `https://developer.android.com/reference/android/os/Handler` to specify the thread upon which the callback will be invoked. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/RuntimeException` | if the app already has too many callbacks registered. |

### registerDefaultNetworkCallback

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void registerDefaultNetworkCallback (ConnectivityManager.NetworkCallback networkCallback)
```

Registers to receive notifications about changes in the application's default network. This may be a physical network or a virtual network, such as a VPN that applies to the application. The callbacks will continue to be called until either the application exits or `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)` is called.

To avoid performance issues due to apps leaking callbacks, the system will limit the number of outstanding requests to 100 per app (identified by their UID), shared with all variants of this method, of `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)` as well as `https://developer.android.com/reference/android/net/ConnectivityDiagnosticsManager#registerConnectivityDiagnosticsCallback(android.net.NetworkRequest,%20java.util.concurrent.Executor,%20android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback)`. Requesting a network with this method will count toward this limit. If this limit is exceeded, an exception will be thrown. To avoid hitting this issue and to conserve resources, make sure to unregister the callbacks with `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)`.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Parameters ||
|---|---|
| `networkCallback` | `ConnectivityManager.NetworkCallback`: The `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` that the system will call as the application's default network changes. The callback is invoked on the default internal Handler. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/RuntimeException` | if the app already has too many callbacks registered. |

### registerDefaultNetworkCallback

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void registerDefaultNetworkCallback (ConnectivityManager.NetworkCallback networkCallback, 
                Handler handler)
```

Registers to receive notifications about changes in the application's default network. This may be a physical network or a virtual network, such as a VPN that applies to the application. The callbacks will continue to be called until either the application exits or `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)` is called.

To avoid performance issues due to apps leaking callbacks, the system will limit the number of outstanding requests to 100 per app (identified by their UID), shared with all variants of this method, of `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)` as well as `https://developer.android.com/reference/android/net/ConnectivityDiagnosticsManager#registerConnectivityDiagnosticsCallback(android.net.NetworkRequest,%20java.util.concurrent.Executor,%20android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback)`. Requesting a network with this method will count toward this limit. If this limit is exceeded, an exception will be thrown. To avoid hitting this issue and to conserve resources, make sure to unregister the callbacks with `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)`.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Parameters ||
|---|---|
| `networkCallback` | `ConnectivityManager.NetworkCallback`: The `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` that the system will call as the application's default network changes. This value cannot be `null`. <br /> |
| `handler` | `Handler`: `https://developer.android.com/reference/android/os/Handler` to specify the thread upon which the callback will be invoked. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/RuntimeException` | if the app already has too many callbacks registered. |

### registerNetworkCallback

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void registerNetworkCallback (NetworkRequest request, 
                ConnectivityManager.NetworkCallback networkCallback)
```

Registers to receive notifications about all networks which satisfy the given `https://developer.android.com/reference/android/net/NetworkRequest`. The callbacks will continue to be called until either the application exits or `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)` is called.

To avoid performance issues due to apps leaking callbacks, the system will limit the number of outstanding requests to 100 per app (identified by their UID), shared with all variants of this method, of `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)` as well as `https://developer.android.com/reference/android/net/ConnectivityDiagnosticsManager#registerConnectivityDiagnosticsCallback(android.net.NetworkRequest,%20java.util.concurrent.Executor,%20android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback)`. Requesting a network with this method will count toward this limit. If this limit is exceeded, an exception will be thrown. To avoid hitting this issue and to conserve resources, make sure to unregister the callbacks with `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)`.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Parameters ||
|---|---|
| `request` | `NetworkRequest`: `https://developer.android.com/reference/android/net/NetworkRequest` describing this request. This value cannot be `null`. <br /> |
| `networkCallback` | `ConnectivityManager.NetworkCallback`: The `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` that the system will call as suitable networks change state. The callback is invoked on the default internal Handler. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/RuntimeException` | if the app already has too many callbacks registered. |

### registerNetworkCallback

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void registerNetworkCallback (NetworkRequest request, 
                PendingIntent operation)
```

Registers a PendingIntent to be sent when a network is available which satisfies the given `https://developer.android.com/reference/android/net/NetworkRequest`. This function behaves identically to the version that takes a NetworkCallback, but instead of `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` a `https://developer.android.com/reference/android/app/PendingIntent` is used. This means the request may outlive the calling application and get called back when a suitable network is found.

The operation is an Intent broadcast that goes to a broadcast receiver that you registered with `https://developer.android.com/reference/android/content/Context#registerReceiver(android.content.BroadcastReceiver,%20android.content.IntentFilter)` or through the \<receiver\> tag in an AndroidManifest.xml file

The operation Intent is delivered with two extras, a `https://developer.android.com/reference/android/net/Network` typed extra called `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_NETWORK` and a `https://developer.android.com/reference/android/net/NetworkRequest` typed extra called `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_NETWORK_REQUEST` containing the original requests parameters.

If there is already a request for this Intent registered (with the equality of two Intents defined by `https://developer.android.com/reference/android/content/Intent#filterEquals(android.content.Intent)`), then it will be removed and replaced by this one, effectively releasing the previous `https://developer.android.com/reference/android/net/NetworkRequest`.

The request may be released normally by calling `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.app.PendingIntent)`.

To avoid performance issues due to apps leaking callbacks, the system will limit the number of outstanding requests to 100 per app (identified by their UID), shared with all variants of this method, of `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)` as well as `https://developer.android.com/reference/android/net/ConnectivityDiagnosticsManager#registerConnectivityDiagnosticsCallback(android.net.NetworkRequest,%20java.util.concurrent.Executor,%20android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback)`. Requesting a network with this method will count toward this limit. If this limit is exceeded, an exception will be thrown. To avoid hitting this issue and to conserve resources, make sure to unregister the callbacks with `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.app.PendingIntent)` or `https://developer.android.com/reference/android/net/ConnectivityManager#releaseNetworkRequest(android.app.PendingIntent)`.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Parameters ||
|---|---|
| `request` | `NetworkRequest`: `https://developer.android.com/reference/android/net/NetworkRequest` describing this request. This value cannot be `null`. <br /> |
| `operation` | `PendingIntent`: Action to perform when the network is available (corresponds to the `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#onAvailable(android.net.Network)` call. Typically comes from `https://developer.android.com/reference/android/app/PendingIntent#getBroadcast(android.content.Context,%20int,%20android.content.Intent,%20int)`. Cannot be null. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/RuntimeException` | if the app already has too many callbacks registered. |

### registerNetworkCallback

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void registerNetworkCallback (NetworkRequest request, 
                ConnectivityManager.NetworkCallback networkCallback, 
                Handler handler)
```

Registers to receive notifications about all networks which satisfy the given `https://developer.android.com/reference/android/net/NetworkRequest`. The callbacks will continue to be called until either the application exits or `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)` is called.

To avoid performance issues due to apps leaking callbacks, the system will limit the number of outstanding requests to 100 per app (identified by their UID), shared with all variants of this method, of `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)` as well as `https://developer.android.com/reference/android/net/ConnectivityDiagnosticsManager#registerConnectivityDiagnosticsCallback(android.net.NetworkRequest,%20java.util.concurrent.Executor,%20android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback)`. Requesting a network with this method will count toward this limit. If this limit is exceeded, an exception will be thrown. To avoid hitting this issue and to conserve resources, make sure to unregister the callbacks with `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)`.   

Requires `https://developer.android.com/reference/android/Manifest.permission#ACCESS_NETWORK_STATE`

<br />

| Parameters ||
|---|---|
| `request` | `NetworkRequest`: `https://developer.android.com/reference/android/net/NetworkRequest` describing this request. This value cannot be `null`. <br /> |
| `networkCallback` | `ConnectivityManager.NetworkCallback`: The `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` that the system will call as suitable networks change state. This value cannot be `null`. <br /> |
| `handler` | `Handler`: `https://developer.android.com/reference/android/os/Handler` to specify the thread upon which the callback will be invoked. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/RuntimeException` | if the app already has too many callbacks registered. |

### releaseNetworkRequest

Added in [API level 22](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void releaseNetworkRequest (PendingIntent operation)
```

Removes a request made via `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)`

This method has the same behavior as `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.app.PendingIntent)` with respect to releasing network resources and disconnecting.

<br />

| Parameters ||
|---|---|
| `operation` | `PendingIntent`: A PendingIntent equal (as defined by `https://developer.android.com/reference/android/content/Intent#filterEquals(android.content.Intent)`) to the PendingIntent passed to `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)` with the corresponding NetworkRequest you'd like to remove. Cannot be null. <br /> |

### removeDefaultNetworkActiveListener

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeDefaultNetworkActiveListener (ConnectivityManager.OnNetworkActiveListener l)
```

Remove network active listener previously registered with `https://developer.android.com/reference/android/net/ConnectivityManager#addDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener)`.

<br />

| Parameters ||
|---|---|
| `l` | `ConnectivityManager.OnNetworkActiveListener`: Previously registered listener. This value cannot be `null`. <br /> |

### reportBadNetwork

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void reportBadNetwork (Network network)
```

<br />

**This method was deprecated in API level 23.**   

Use `https://developer.android.com/reference/android/net/ConnectivityManager#reportNetworkConnectivity(android.net.Network,%20boolean)` which allows reporting both working and non-working connectivity.

Report a problem network to the framework. This provides a hint to the system that there might be connectivity problems on this network and may cause the framework to re-evaluate network connectivity and/or switch to another network.

<br />

| Parameters ||
|---|---|
| `network` | `Network`: The `https://developer.android.com/reference/android/net/Network` the application was attempting to use or `null` to indicate the current default network. <br /> |

### reportNetworkConnectivity

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void reportNetworkConnectivity (Network network, 
                boolean hasConnectivity)
```

Report to the framework whether a network has working connectivity. This provides a hint to the system that a particular network is providing working connectivity or not. In response the framework may re-evaluate the network's connectivity and might take further action thereafter.

<br />

| Parameters ||
|---|---|
| `network` | `Network`: The `https://developer.android.com/reference/android/net/Network` the application was attempting to use or `null` to indicate the current default network. <br /> |
| `hasConnectivity` | `boolean`: `true` if the application was able to successfully access the Internet using `network` or `false` if not. <br /> |

### requestBandwidthUpdate

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean requestBandwidthUpdate (Network network)
```

Requests bandwidth update for a given `https://developer.android.com/reference/android/net/Network` and returns whether the update request is accepted by ConnectivityService. Once accepted, ConnectivityService will poll underlying network connection for updated bandwidth information. The caller will be notified via `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` if there is an update. Notice that this method assumes that the caller has previously called `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` to listen for network changes.

<br />

| Parameters ||
|---|---|
| `network` | `Network`: `https://developer.android.com/reference/android/net/Network` specifying which network you're interested. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | `true` on success, `false` if the `https://developer.android.com/reference/android/net/Network` is no longer valid. <br /> |

### requestNetwork

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void requestNetwork (NetworkRequest request, 
                ConnectivityManager.NetworkCallback networkCallback)
```

Request a network to satisfy a set of `https://developer.android.com/reference/android/net/NetworkCapabilities`.

This method will attempt to find the best network that matches the passed `https://developer.android.com/reference/android/net/NetworkRequest`, and to bring up one that does if none currently satisfies the criteria. The platform will evaluate which network is the best at its own discretion. Throughput, latency, cost per byte, policy, user preference and other considerations may be factored in the decision of what is considered the best network.

As long as this request is outstanding, the platform will try to maintain the best network matching this request, while always attempting to match the request to a better network if possible. If a better match is found, the platform will switch this request to the now-best network and inform the app of the newly best network by invoking `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#onAvailable(android.net.Network)` on the provided callback. Note that the platform will not try to maintain any other network than the best one currently matching the request: a network not matching any network request may be disconnected at any time.

For example, an application could use this method to obtain a connected cellular network even if the device currently has a data connection over Ethernet. This may cause the cellular radio to consume additional power. Or, an application could inform the system that it wants a network supporting sending MMSes and have the system let it know about the currently best MMS-supporting network through the provided `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback`.

The status of the request can be followed by listening to the various callbacks described in `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback`. The `https://developer.android.com/reference/android/net/Network` object passed to the callback methods can be used to direct traffic to the network (although accessing some networks may be subject to holding specific permissions). Callers will learn about the specific characteristics of the network through `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#onCapabilitiesChanged(android.net.Network,%20android.net.NetworkCapabilities)` and `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#onLinkPropertiesChanged(android.net.Network,%20android.net.LinkProperties)`. The methods of the provided `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` will only be invoked due to changes in the best network matching the request at any given time; therefore when a better network matching the request becomes available, the `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#onAvailable(android.net.Network)` method is called with the new network after which no further updates are given about the previously-best network, unless it becomes the best again at some later time. All callbacks are invoked in order on the same thread, which by default is a thread created by the framework running in the app. See `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback,%20android.os.Handler)` to change where the callbacks are invoked.

This`https://developer.android.com/reference/android/net/NetworkRequest` will live until released via `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)` or the calling application exits, at which point the system may let go of the network at any time.

A version of this method which takes a timeout is `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback,%20int)`, that an app can use to only wait for a limited amount of time for the network to become unavailable.

It is presently unsupported to request a network with mutable `https://developer.android.com/reference/android/net/NetworkCapabilities` such as `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_VALIDATED` or `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_CAPTIVE_PORTAL` as these `NetworkCapabilities` represent states that a particular network may never attain, and whether a network will attain these states is unknown prior to bringing up the network so the framework does not know how to go about satisfying a request with these capabilities.

This method requires the caller to hold either the `https://developer.android.com/reference/android/Manifest.permission#CHANGE_NETWORK_STATE` permission or the ability to modify system settings as determined by `https://developer.android.com/reference/android/provider/Settings.System#canWrite(android.content.Context)`.

To avoid performance issues due to apps leaking callbacks, the system will limit the number of outstanding requests to 100 per app (identified by their UID), shared with all variants of this method, of `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.app.PendingIntent)` as well as `https://developer.android.com/reference/android/net/ConnectivityDiagnosticsManager#registerConnectivityDiagnosticsCallback(android.net.NetworkRequest,%20java.util.concurrent.Executor,%20android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback)`. Requesting a network with this method will count toward this limit. If this limit is exceeded, an exception will be thrown. To avoid hitting this issue and to conserve resources, make sure to unregister the callbacks with `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)`.

<br />

| Parameters ||
|---|---|
| `request` | `NetworkRequest`: `https://developer.android.com/reference/android/net/NetworkRequest` describing this request. This value cannot be `null`. <br /> |
| `networkCallback` | `ConnectivityManager.NetworkCallback`: The `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` to be utilized for this request. Note the callback must not be shared - it uniquely specifies this request. The callback is invoked on the default internal Handler. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if `request` contains invalid network capabilities. |
| `https://developer.android.com/reference/java/lang/RuntimeException` | if the app already has too many callbacks registered. |
| `https://developer.android.com/reference/java/lang/SecurityException` | if missing the appropriate permissions. |

### requestNetwork

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void requestNetwork (NetworkRequest request, 
                ConnectivityManager.NetworkCallback networkCallback, 
                int timeoutMs)
```

Request a network to satisfy a set of `https://developer.android.com/reference/android/net/NetworkCapabilities`, limited by a timeout. This function behaves identically to the non-timed-out version `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)`, but if a suitable network is not found within the given time (in milliseconds) the `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#onUnavailable()` callback is called. The request can still be released normally by calling `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback)` but does not have to be released if timed-out (it is automatically released). Unregistering a request that timed out is not an error.

Do not use this method to poll for the existence of specific networks (e.g. with a small timeout) - `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` is provided for that purpose. Calling this method will attempt to bring up the requested network.

This method has the same permission requirements as `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)`, is subject to the same limitations, and throws the same exceptions in the same conditions.

<br />

| Parameters ||
|---|---|
| `request` | `NetworkRequest`: `https://developer.android.com/reference/android/net/NetworkRequest` describing this request. This value cannot be `null`. <br /> |
| `networkCallback` | `ConnectivityManager.NetworkCallback`: The `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` to be utilized for this request. Note the callback must not be shared - it uniquely specifies this request. This value cannot be `null`. <br /> |
| `timeoutMs` | `int`: The time in milliseconds to attempt looking for a suitable network before `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#onUnavailable()` is called. The timeout must be a positive value (i.e. \>0). <br /> |

### requestNetwork

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void requestNetwork (NetworkRequest request, 
                ConnectivityManager.NetworkCallback networkCallback, 
                Handler handler)
```

Request a network to satisfy a set of `https://developer.android.com/reference/android/net/NetworkCapabilities`. This method behaves identically to `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` but runs all the callbacks on the passed Handler.

This method has the same permission requirements as `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)`, is subject to the same limitations, and throws the same exceptions in the same conditions.

<br />

| Parameters ||
|---|---|
| `request` | `NetworkRequest`: `https://developer.android.com/reference/android/net/NetworkRequest` describing this request. This value cannot be `null`. <br /> |
| `networkCallback` | `ConnectivityManager.NetworkCallback`: The `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` to be utilized for this request. Note the callback must not be shared - it uniquely specifies this request. This value cannot be `null`. <br /> |
| `handler` | `Handler`: `https://developer.android.com/reference/android/os/Handler` to specify the thread upon which the callback will be invoked. This value cannot be `null`. <br /> |

### requestNetwork

Added in [API level 22](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void requestNetwork (NetworkRequest request, 
                PendingIntent operation)
```

Request a network to satisfy a set of `https://developer.android.com/reference/android/net/NetworkCapabilities`. This function behaves identically to the version that takes a NetworkCallback, but instead of `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` a `https://developer.android.com/reference/android/app/PendingIntent` is used. This means the request may outlive the calling application and get called back when a suitable network is found.

The operation is an Intent broadcast that goes to a broadcast receiver that you registered with `https://developer.android.com/reference/android/content/Context#registerReceiver(android.content.BroadcastReceiver,%20android.content.IntentFilter)` or through the \<receiver\> tag in an AndroidManifest.xml file

The operation Intent is delivered with two extras, a `https://developer.android.com/reference/android/net/Network` typed extra called `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_NETWORK` and a `https://developer.android.com/reference/android/net/NetworkRequest` typed extra called `https://developer.android.com/reference/android/net/ConnectivityManager#EXTRA_NETWORK_REQUEST` containing the original requests parameters. It is important to create a new, `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` based request before completing the processing of the Intent to reserve the network or it will be released shortly after the Intent is processed.

If there is already a request for this Intent registered (with the equality of two Intents defined by `https://developer.android.com/reference/android/content/Intent#filterEquals(android.content.Intent)`), then it will be removed and replaced by this one, effectively releasing the previous `https://developer.android.com/reference/android/net/NetworkRequest`.

The request may be released normally by calling `https://developer.android.com/reference/android/net/ConnectivityManager#releaseNetworkRequest(android.app.PendingIntent)`.

It is presently unsupported to request a network with either `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_VALIDATED` or `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_CAPTIVE_PORTAL` as these `NetworkCapabilities` represent states that a particular network may never attain, and whether a network will attain these states is unknown prior to bringing up the network so the framework does not know how to go about satisfying a request with these capabilities.

To avoid performance issues due to apps leaking callbacks, the system will limit the number of outstanding requests to 100 per app (identified by their UID), shared with all variants of this method, of `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.app.PendingIntent)` as well as `https://developer.android.com/reference/android/net/ConnectivityDiagnosticsManager#registerConnectivityDiagnosticsCallback(android.net.NetworkRequest,%20java.util.concurrent.Executor,%20android.net.ConnectivityDiagnosticsManager.ConnectivityDiagnosticsCallback)`. Requesting a network with this method will count toward this limit. If this limit is exceeded, an exception will be thrown. To avoid hitting this issue and to conserve resources, make sure to unregister the callbacks with `https://developer.android.com/reference/android/net/ConnectivityManager#unregisterNetworkCallback(android.app.PendingIntent)` or `https://developer.android.com/reference/android/net/ConnectivityManager#releaseNetworkRequest(android.app.PendingIntent)`.

This method requires the caller to hold either the `https://developer.android.com/reference/android/Manifest.permission#CHANGE_NETWORK_STATE` permission or the ability to modify system settings as determined by `https://developer.android.com/reference/android/provider/Settings.System#canWrite(android.content.Context)`.

<br />

<br />

| Parameters ||
|---|---|
| `request` | `NetworkRequest`: `https://developer.android.com/reference/android/net/NetworkRequest` describing this request. This value cannot be `null`. <br /> |
| `operation` | `PendingIntent`: Action to perform when the network is available (corresponds to the `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#onAvailable(android.net.Network)` call. Typically comes from `https://developer.android.com/reference/android/app/PendingIntent#getBroadcast(android.content.Context,%20int,%20android.content.Intent,%20int)`. Cannot be null. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if `request` contains invalid network capabilities. |
| `https://developer.android.com/reference/java/lang/RuntimeException` | if the app already has too many callbacks registered. |
| `https://developer.android.com/reference/java/lang/SecurityException` | if missing the appropriate permissions. |

### requestNetwork

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void requestNetwork (NetworkRequest request, 
                ConnectivityManager.NetworkCallback networkCallback, 
                Handler handler, 
                int timeoutMs)
```

Request a network to satisfy a set of `https://developer.android.com/reference/android/net/NetworkCapabilities`, limited by a timeout. This method behaves identically to `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback,%20int)` but runs all the callbacks on the passed Handler.

This method has the same permission requirements as `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)`, is subject to the same limitations, and throws the same exceptions in the same conditions.

<br />

| Parameters ||
|---|---|
| `request` | `NetworkRequest`: `https://developer.android.com/reference/android/net/NetworkRequest` describing this request. This value cannot be `null`. <br /> |
| `networkCallback` | `ConnectivityManager.NetworkCallback`: The `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` to be utilized for this request. Note the callback must not be shared - it uniquely specifies this request. This value cannot be `null`. <br /> |
| `handler` | `Handler`: `https://developer.android.com/reference/android/os/Handler` to specify the thread upon which the callback will be invoked. This value cannot be `null`. <br /> |
| `timeoutMs` | `int`: The time in milliseconds to attempt looking for a suitable network before `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#onUnavailable()` is called. <br /> |

### reserveNetwork

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [U Extensions 17](https://developer.android.com/sdkExtensions)

```
public void reserveNetwork (NetworkRequest request, 
                Handler handler, 
                ConnectivityManager.NetworkCallback networkCallback)
```

Reserve a network to satisfy a set of `https://developer.android.com/reference/android/net/NetworkCapabilities`. Some types of networks require the system to generate (i.e. reserve) some set of information before a network can be connected. For such networks, `https://developer.android.com/reference/android/net/ConnectivityManager#reserveNetwork(android.net.NetworkRequest,%20android.os.Handler,%20android.net.ConnectivityManager.NetworkCallback)` can be used which may lead to a call to `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#onReserved(android.net.NetworkCapabilities)` containing the `https://developer.android.com/reference/android/net/NetworkCapabilities` that were reserved. A reservation reserves at most one network. If the network connects, a reservation request behaves similar to a request filed using `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)`. The provided `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` will only be called for the reserved network. If the system determines that the requested reservation can never be fulfilled, `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#onUnavailable()` is called, the reservation is released by the system, and the provided callback can be reused. Otherwise, the reservation remains in place until the requested network connects. There is no guarantee that the reserved network will ever connect.

<br />

| Parameters ||
|---|---|
| `request` | `NetworkRequest`: `https://developer.android.com/reference/android/net/NetworkRequest` describing this request. This value cannot be `null`. <br /> |
| `handler` | `Handler`: `https://developer.android.com/reference/android/os/Handler` to specify the thread upon which the callback will be invoked. This value cannot be `null`. <br /> |
| `networkCallback` | `ConnectivityManager.NetworkCallback`: The `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` to be utilized for this request. Note the callback must not be shared - it uniquely specifies this request. This value cannot be `null`. <br /> |

### setNetworkPreference

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setNetworkPreference (int preference)
```

<br />

**This method was deprecated in API level 21.**   

Functionality has been removed as it no longer makes sense, with many more than two networks - we'd need an array to express preference. Instead we use dynamic network properties of the networks to describe their precedence.

Specifies the preferred network type. When the device has more than one type available the preferred network type will be used.

<br />

| Parameters ||
|---|---|
| `preference` | `int`: the network type to prefer over all others. It is unspecified what happens to the old preferred network in the overall ordering. <br /> |

### setProcessDefaultNetwork

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static boolean setProcessDefaultNetwork (Network network)
```

<br />

**This method was deprecated in API level 23.**   

This function can throw `https://developer.android.com/reference/java/lang/IllegalStateException`. Use `https://developer.android.com/reference/android/net/ConnectivityManager#bindProcessToNetwork(android.net.Network)` instead. `bindProcessToNetwork` is a direct replacement.

Binds the current process to `network`. All Sockets created in the future (and not explicitly bound via a bound SocketFactory from `https://developer.android.com/reference/android/net/Network#getSocketFactory()`) will be bound to `network`. All host name resolutions will be limited to `network` as well. Note that if `network` ever disconnects, all Sockets created in this way will cease to work and all host name resolutions will fail. This is by design so an application doesn't accidentally use Sockets it thinks are still bound to a particular `https://developer.android.com/reference/android/net/Network`. To clear binding pass `null` for `network`. Using individually bound Sockets created by Network.getSocketFactory().createSocket() and performing network-specific host name resolutions via `https://developer.android.com/reference/android/net/Network#getAllByName(java.lang.String)` is preferred to calling `setProcessDefaultNetwork`.

<br />

| Parameters ||
|---|---|
| `network` | `Network`: The `https://developer.android.com/reference/android/net/Network` to bind the current process to, or `null` to clear the current binding. <br /> |

| Returns ||
|---|---|
| `boolean` | `true` on success, `false` if the `https://developer.android.com/reference/android/net/Network` is no longer valid. <br /> |

### unregisterNetworkCallback

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void unregisterNetworkCallback (ConnectivityManager.NetworkCallback networkCallback)
```

Unregisters a `NetworkCallback` and possibly releases networks originating from `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` and `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.net.ConnectivityManager.NetworkCallback)` calls. If the given `NetworkCallback` had previously been used with `#requestNetwork`, any networks that the device brought up only to satisfy that request will be disconnected. Notifications that would have triggered that `NetworkCallback` will immediately stop triggering it as soon as this call returns.

<br />

| Parameters ||
|---|---|
| `networkCallback` | `ConnectivityManager.NetworkCallback`: The `https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback` used when making the request. This value cannot be `null`. <br /> |

### unregisterNetworkCallback

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void unregisterNetworkCallback (PendingIntent operation)
```

Unregisters a callback previously registered via `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.app.PendingIntent)`.

<br />

| Parameters ||
|---|---|
| `operation` | `PendingIntent`: A PendingIntent equal (as defined by `https://developer.android.com/reference/android/content/Intent#filterEquals(android.content.Intent)`) to the PendingIntent passed to `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.app.PendingIntent)`. Cannot be null. <br /> |