ConnectivityManager


public class ConnectivityManager
extends Object

java.lang.Object
   ↳ android.net.ConnectivityManager


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

Summary

Nested classes

class ConnectivityManager.NetworkCallback

Base class for NetworkRequest callbacks. 

interface ConnectivityManager.OnNetworkActiveListener

Callback for use with ConnectivityManager.addDefaultNetworkActiveListener to find out when the system default network has gone in to a high power state. 

Constants

String ACTION_BACKGROUND_DATA_SETTING_CHANGED

This constant was deprecated in API level 16. As of 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, getActiveNetworkInfo() will now appear disconnected. During first boot after a platform upgrade, this broadcast will be sent once if getBackgroundDataSetting() was false before the upgrade.

String ACTION_CAPTIVE_PORTAL_SIGN_IN

The device has connected to a network that has presented a captive portal, which is blocking Internet connectivity.

String ACTION_RESTRICT_BACKGROUND_CHANGED

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

String CONNECTIVITY_ACTION

This constant was deprecated in API level 28. apps should use the more versatile requestNetwork(NetworkRequest, PendingIntent), registerNetworkCallback(NetworkRequest, PendingIntent) or registerDefaultNetworkCallback(NetworkCallback) functions instead for faster and more detailed updates about the network changes they care about.

int 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 getNetworkPreference() from an App.

String EXTRA_CAPTIVE_PORTAL

The lookup key for a CaptivePortal object included with the ACTION_CAPTIVE_PORTAL_SIGN_IN intent.

String EXTRA_CAPTIVE_PORTAL_URL

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

String EXTRA_EXTRA_INFO

This constant was deprecated in API level 29. See NetworkInfo.getExtraInfo().

String EXTRA_IS_FAILOVER

This constant was deprecated in API level 29. See NetworkInfo.

String EXTRA_NETWORK

The lookup key for a Network object included with the intent after successfully finding a network for the applications request.

String EXTRA_NETWORK_INFO

This constant was deprecated in API level 15. The NetworkInfo object is deprecated, as many of its properties can't accurately represent modern network characteristics. Please obtain information about networks from the NetworkCapabilities or LinkProperties objects instead.

String EXTRA_NETWORK_REQUEST

The lookup key for a NetworkRequest object included with the intent after successfully finding a network for the applications request.

String 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 NetworkCapabilities instead, in particular the transports.

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.

String EXTRA_OTHER_NETWORK_INFO

This constant was deprecated in API level 29. See NetworkInfo.

String EXTRA_REASON

The lookup key for a string that indicates why an attempt to connect to a network failed.

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.

int MULTIPATH_PREFERENCE_PERFORMANCE

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

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.

int RESTRICT_BACKGROUND_STATUS_DISABLED

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

int RESTRICT_BACKGROUND_STATUS_ENABLED

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

int RESTRICT_BACKGROUND_STATUS_WHITELISTED

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

int TYPE_BLUETOOTH

This constant was deprecated in API level 28. Applications should instead use NetworkCapabilities.hasTransport or requestNetwork(NetworkRequest,NetworkCallback) to request an appropriate network. See NetworkCapabilities for supported transports.

int TYPE_DUMMY

This constant was deprecated in API level 28. This is not used any more.

int TYPE_ETHERNET

This constant was deprecated in API level 28. Applications should instead use NetworkCapabilities.hasTransport or requestNetwork(NetworkRequest,NetworkCallback) to request an appropriate network. See NetworkCapabilities for supported transports.

int TYPE_MOBILE

This constant was deprecated in API level 28. Applications should instead use NetworkCapabilities.hasTransport or requestNetwork(NetworkRequest,NetworkCallback) to request an appropriate network. See NetworkCapabilities for supported transports.

int TYPE_MOBILE_DUN

This constant was deprecated in API level 28. Applications should instead use NetworkCapabilities.hasCapability or requestNetwork(NetworkRequest,NetworkCallback) to request a network that provides the NetworkCapabilities.NET_CAPABILITY_DUN capability.

int TYPE_MOBILE_HIPRI

This constant was deprecated in API level 23. Applications should instead use NetworkCapabilities.hasTransport or requestNetwork(NetworkRequest,NetworkCallback) to request an appropriate network. See NetworkCapabilities for supported transports.

int TYPE_MOBILE_MMS

This constant was deprecated in API level 23. Applications should instead use NetworkCapabilities.hasCapability or requestNetwork(NetworkRequest,NetworkCallback) to request a network that provides the NetworkCapabilities.NET_CAPABILITY_MMS capability.

int TYPE_MOBILE_SUPL

This constant was deprecated in API level 23. Applications should instead use NetworkCapabilities.hasCapability or requestNetwork(NetworkRequest,NetworkCallback) to request a network that provides the NetworkCapabilities.NET_CAPABILITY_SUPL capability.

int TYPE_VPN

This constant was deprecated in API level 28. Applications should use NetworkCapabilities.TRANSPORT_VPN instead.

int TYPE_WIFI

This constant was deprecated in API level 28. Applications should instead use NetworkCapabilities.hasTransport or requestNetwork(NetworkRequest,NetworkCallback) to request an appropriate network. See NetworkCapabilities for supported transports.

int TYPE_WIMAX

This constant was deprecated in API level 28. Applications should instead use NetworkCapabilities.hasTransport or requestNetwork(NetworkRequest,NetworkCallback) to request an appropriate network. See NetworkCapabilities for supported transports.

Public methods

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.

boolean bindProcessToNetwork(Network network)

Binds the current process to network.

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.

Network getActiveNetwork()

Returns a Network object corresponding to the currently active default data network.

NetworkInfo getActiveNetworkInfo()

This method was deprecated in API level 29. See NetworkInfo.

NetworkInfo[] getAllNetworkInfo()

This method was deprecated in API level 23. This method does not support multiple connected networks of the same type. Use getAllNetworks() and getNetworkInfo(android.net.Network) instead.

Network[] 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 registerNetworkCallback(NetworkRequest,NetworkCallback) instead. Apps that desire to obtain information about networks that do not apply to them can use NetworkRequest.Builder.setIncludeOtherUidNetworks.

boolean getBackgroundDataSetting()

This method was deprecated in API level 15. As of 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, getActiveNetworkInfo() will now appear disconnected.

Network getBoundNetworkForProcess()

Returns the Network currently bound to this process via bindProcessToNetwork(Network), or null if no Network is explicitly bound.

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

Returns the uid of the owner of a network connection.

ProxyInfo getDefaultProxy()

Get the current default HTTP proxy settings.

LinkProperties getLinkProperties(Network network)

Get the LinkProperties for the given Network.

int getMultipathPreference(Network network)

Provides a hint to the calling application on whether it is desirable to use the multinetwork APIs (e.g., Network.openConnection, Network.bindSocket, etc.) for multipath data transfer on this network when it is not the system default network.

NetworkCapabilities getNetworkCapabilities(Network network)

Get the NetworkCapabilities for the given Network, or null.

NetworkInfo getNetworkInfo(int networkType)

This method was deprecated in API level 23. This method does not support multiple connected networks of the same type. Use getAllNetworks() and getNetworkInfo(android.net.Network) instead.

NetworkInfo getNetworkInfo(Network network)

This method was deprecated in API level 29. See NetworkInfo.

int 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[] getNetworkWatchlistConfigHash()

The network watchlist is a list of domains and IP addresses that are associated with potentially harmful apps.

static Network getProcessDefaultNetwork()

This method was deprecated in API level 23. Using this function can lead to other functions throwing IllegalStateException. Use getBoundNetworkForProcess() instead. getBoundNetworkForProcess is a direct replacement.

int getRestrictBackgroundStatus()

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

boolean isActiveNetworkMetered()

Returns if the currently active data network is metered.

boolean isDefaultNetworkActive()

Return whether the data network is currently active.

static boolean isNetworkTypeValid(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 registerBestMatchingNetworkCallback(NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback, Handler handler)

Registers to receive notifications about the best matching network which satisfy the given NetworkRequest.

void registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback networkCallback)

Registers to receive notifications about changes in the application's default network.

void registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback networkCallback, Handler handler)

Registers to receive notifications about changes in the application's default network.

void registerNetworkCallback(NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback)

Registers to receive notifications about all networks which satisfy the given NetworkRequest.

void registerNetworkCallback(NetworkRequest request, PendingIntent operation)

Registers a PendingIntent to be sent when a network is available which satisfies the given NetworkRequest.

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

Registers to receive notifications about all networks which satisfy the given NetworkRequest.

void releaseNetworkRequest(PendingIntent operation)

Removes a request made via requestNetwork(NetworkRequest,android.app.PendingIntent)

This method has the same behavior as unregisterNetworkCallback(android.app.PendingIntent) with respect to releasing network resources and disconnecting.

void removeDefaultNetworkActiveListener(ConnectivityManager.OnNetworkActiveListener l)

Remove network active listener previously registered with addDefaultNetworkActiveListener(OnNetworkActiveListener).

void reportBadNetwork(Network network)

This method was deprecated in API level 23. Use reportNetworkConnectivity(Network, boolean) which allows reporting both working and non-working connectivity.

void reportNetworkConnectivity(Network network, boolean hasConnectivity)

Report to the framework whether a network has working connectivity.

boolean requestBandwidthUpdate(Network network)

Requests bandwidth update for a given Network and returns whether the update request is accepted by ConnectivityService.

void requestNetwork(NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback)

Request a network to satisfy a set of NetworkCapabilities.

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

Request a network to satisfy a set of NetworkCapabilities, limited by a timeout.

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

Request a network to satisfy a set of NetworkCapabilities.

void requestNetwork(NetworkRequest request, PendingIntent operation)

Request a network to satisfy a set of NetworkCapabilities.

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

Request a network to satisfy a set of NetworkCapabilities, limited by a timeout.

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

Reserve a network to satisfy a set of NetworkCapabilities.

void setNetworkPreference(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 setProcessDefaultNetwork(Network network)

This method was deprecated in API level 23. This function can throw IllegalStateException. Use bindProcessToNetwork(Network) instead. bindProcessToNetwork is a direct replacement.

void unregisterNetworkCallback(ConnectivityManager.NetworkCallback networkCallback)

Unregisters a NetworkCallback and possibly releases networks originating from requestNetwork(NetworkRequest,NetworkCallback) and registerNetworkCallback(NetworkRequest,NetworkCallback) calls.

void unregisterNetworkCallback(PendingIntent operation)

Unregisters a callback previously registered via registerNetworkCallback(NetworkRequest,android.app.PendingIntent).

Inherited methods

Constants

ACTION_BACKGROUND_DATA_SETTING_CHANGED

Added in API level 3
Deprecated in API level 16
public static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED

This constant was deprecated in API level 16.
As of 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, getActiveNetworkInfo() will now appear disconnected. During first boot after a platform upgrade, this broadcast will be sent once if getBackgroundDataSetting() was false before the upgrade.

Broadcast Action: The setting for background data usage has changed values. Use 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.

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

ACTION_CAPTIVE_PORTAL_SIGN_IN

Added in API level 23
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 Network typed extra called EXTRA_NETWORK that represents the network presenting the captive portal; all communication with the captive portal must be done using this Network object.

This activity includes a CaptivePortal extra named 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 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 CaptivePortal.ignoreNetwork.

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

ACTION_RESTRICT_BACKGROUND_CHANGED

Added in API level 24
public static final String ACTION_RESTRICT_BACKGROUND_CHANGED

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

Applications should call getRestrictBackgroundStatus() to check if the restriction applies to them.

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

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

CONNECTIVITY_ACTION

Added in API level 1
Deprecated in API level 28
public static final String CONNECTIVITY_ACTION

This constant was deprecated in API level 28.
apps should use the more versatile requestNetwork(NetworkRequest, PendingIntent), registerNetworkCallback(NetworkRequest, PendingIntent) or registerDefaultNetworkCallback(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.

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 BroadcastReceiver with Context.registerReceiver() and that context is still valid.

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.

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.

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

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.

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

DEFAULT_NETWORK_PREFERENCE

Added in API level 1
Deprecated in API level 18
public static final int 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 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.

Constant Value: 1 (0x00000001)

EXTRA_CAPTIVE_PORTAL

Added in API level 23
public static final String EXTRA_CAPTIVE_PORTAL

The lookup key for a CaptivePortal object included with the 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 android.content.Intent.getParcelableExtra(String).

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

EXTRA_CAPTIVE_PORTAL_URL

Added in API level 24
public static final String EXTRA_CAPTIVE_PORTAL_URL

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

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

EXTRA_EXTRA_INFO

Added in API level 1
Deprecated in API level 29
public static final String EXTRA_EXTRA_INFO

This constant was deprecated in API level 29.
See 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 android.content.Intent.getStringExtra(String).

Constant Value: "extraInfo"

EXTRA_IS_FAILOVER

Added in API level 1
Deprecated in API level 29
public static final String EXTRA_IS_FAILOVER

This constant was deprecated in API level 29.
See 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 android.content.Intent.getBooleanExtra(String,boolean).

Constant Value: "isFailover"

EXTRA_NETWORK

Added in API level 22
public static final String EXTRA_NETWORK

The lookup key for a Network object included with the intent after successfully finding a network for the applications request. Retrieve it with android.content.Intent.getParcelableExtra(String).

Note that if you intend to invoke Network.openConnection(java.net.URL) then you must get a ConnectivityManager instance before doing so.

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

EXTRA_NETWORK_INFO

Added in API level 1
Deprecated in API level 15
public static final String EXTRA_NETWORK_INFO

This constant was deprecated in API level 15.
The NetworkInfo object is deprecated, as many of its properties can't accurately represent modern network characteristics. Please obtain information about networks from the NetworkCapabilities or LinkProperties objects instead.

The lookup key for a NetworkInfo object. Retrieve with android.content.Intent.getParcelableExtra(String).

Constant Value: "networkInfo"

EXTRA_NETWORK_REQUEST

Added in API level 22
public static final String EXTRA_NETWORK_REQUEST

The lookup key for a NetworkRequest object included with the intent after successfully finding a network for the applications request. Retrieve it with android.content.Intent.getParcelableExtra(String).

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

EXTRA_NETWORK_TYPE

Added in API level 17
Deprecated in API level 29
public static final String 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 NetworkCapabilities instead, in particular the transports.

Network type which triggered a CONNECTIVITY_ACTION broadcast.

Constant Value: "networkType"

EXTRA_NO_CONNECTIVITY

Added in API level 1
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 android.content.Intent.getBooleanExtra(String,boolean).

Constant Value: "noConnectivity"

EXTRA_OTHER_NETWORK_INFO

Added in API level 1
Deprecated in API level 29
public static final String EXTRA_OTHER_NETWORK_INFO

This constant was deprecated in API level 29.
See NetworkInfo.

The lookup key for a NetworkInfo object. This is supplied when there is another network that it may be possible to connect to. Retrieve with android.content.Intent.getParcelableExtra(String).

Constant Value: "otherNetwork"

EXTRA_REASON

Added in API level 1
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 android.content.Intent.getStringExtra(String).

Constant Value: "reason"

MULTIPATH_PREFERENCE_HANDOVER

Added in API level 26
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.

Constant Value: 1 (0x00000001)

MULTIPATH_PREFERENCE_PERFORMANCE

Added in API level 26
public static final int MULTIPATH_PREFERENCE_PERFORMANCE

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

Constant Value: 4 (0x00000004)

MULTIPATH_PREFERENCE_RELIABILITY

Added in API level 26
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.

Constant Value: 2 (0x00000002)

RESTRICT_BACKGROUND_STATUS_DISABLED

Added in API level 24
public static final int RESTRICT_BACKGROUND_STATUS_DISABLED

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

Constant Value: 1 (0x00000001)

RESTRICT_BACKGROUND_STATUS_ENABLED

Added in API level 24
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.

Constant Value: 3 (0x00000003)

RESTRICT_BACKGROUND_STATUS_WHITELISTED

Added in API level 24
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.

Constant Value: 2 (0x00000002)

TYPE_BLUETOOTH

Added in API level 13
Deprecated in API level 28
public static final int TYPE_BLUETOOTH

This constant was deprecated in API level 28.
Applications should instead use NetworkCapabilities.hasTransport or requestNetwork(NetworkRequest,NetworkCallback) to request an appropriate network. See NetworkCapabilities for supported transports.

A Bluetooth data connection.

Constant Value: 7 (0x00000007)

TYPE_DUMMY

Added in API level 14
Deprecated in API level 28
public static final int TYPE_DUMMY

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.

Constant Value: 8 (0x00000008)

TYPE_ETHERNET

Added in API level 13
Deprecated in API level 28
public static final int TYPE_ETHERNET

This constant was deprecated in API level 28.
Applications should instead use NetworkCapabilities.hasTransport or requestNetwork(NetworkRequest,NetworkCallback) to request an appropriate network. See NetworkCapabilities for supported transports.

An Ethernet data connection.

Constant Value: 9 (0x00000009)

TYPE_MOBILE

Added in API level 1
Deprecated in API level 28
public static final int TYPE_MOBILE

This constant was deprecated in API level 28.
Applications should instead use NetworkCapabilities.hasTransport or requestNetwork(NetworkRequest,NetworkCallback) to request an appropriate network. See NetworkCapabilities for supported transports.

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

Constant Value: 0 (0x00000000)

TYPE_MOBILE_DUN

Added in API level 8
Deprecated in API level 28
public static final int TYPE_MOBILE_DUN

This constant was deprecated in API level 28.
Applications should instead use NetworkCapabilities.hasCapability or requestNetwork(NetworkRequest,NetworkCallback) to request a network that provides the NetworkCapabilities.NET_CAPABILITY_DUN capability.

A DUN-specific Mobile data connection. This network type may use the same network interface as 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.

Constant Value: 4 (0x00000004)

TYPE_MOBILE_HIPRI

Added in API level 8
Deprecated in API level 23
public static final int TYPE_MOBILE_HIPRI

This constant was deprecated in API level 23.
Applications should instead use NetworkCapabilities.hasTransport or requestNetwork(NetworkRequest,NetworkCallback) to request an appropriate network. See NetworkCapabilities for supported transports.

A High Priority Mobile data connection. This network type uses the same network interface as TYPE_MOBILE but the routing setup is different.

Constant Value: 5 (0x00000005)

TYPE_MOBILE_MMS

Added in API level 8
Deprecated in API level 23
public static final int TYPE_MOBILE_MMS

This constant was deprecated in API level 23.
Applications should instead use NetworkCapabilities.hasCapability or requestNetwork(NetworkRequest,NetworkCallback) to request a network that provides the NetworkCapabilities.NET_CAPABILITY_MMS capability.

An MMS-specific Mobile data connection. This network type may use the same network interface as 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.

Constant Value: 2 (0x00000002)

TYPE_MOBILE_SUPL

Added in API level 8
Deprecated in API level 23
public static final int TYPE_MOBILE_SUPL

This constant was deprecated in API level 23.
Applications should instead use NetworkCapabilities.hasCapability or requestNetwork(NetworkRequest,NetworkCallback) to request a network that provides the NetworkCapabilities.NET_CAPABILITY_SUPL capability.

A SUPL-specific Mobile data connection. This network type may use the same network interface as 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.

Constant Value: 3 (0x00000003)

TYPE_VPN

Added in API level 21
Deprecated in API level 28
public static final int TYPE_VPN

This constant was deprecated in API level 28.
Applications should use NetworkCapabilities.TRANSPORT_VPN instead.

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

Constant Value: 17 (0x00000011)

TYPE_WIFI

Added in API level 1
Deprecated in API level 28
public static final int TYPE_WIFI

This constant was deprecated in API level 28.
Applications should instead use NetworkCapabilities.hasTransport or requestNetwork(NetworkRequest,NetworkCallback) to request an appropriate network. See NetworkCapabilities for supported transports.

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

Constant Value: 1 (0x00000001)

TYPE_WIMAX

Added in API level 8
Deprecated in API level 28
public static final int TYPE_WIMAX

This constant was deprecated in API level 28.
Applications should instead use NetworkCapabilities.hasTransport or requestNetwork(NetworkRequest,NetworkCallback) to request an appropriate network. See NetworkCapabilities for supported transports.

A WiMAX data connection.

Constant Value: 6 (0x00000006)

Public methods

addDefaultNetworkActiveListener

Added in API level 21
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 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 ConnectivityManager.bindProcessToNetwork this function will not reflect the process's default, but the system default.

Parameters
l ConnectivityManager.OnNetworkActiveListener: The listener to be told when the network is active.

bindProcessToNetwork

Added in API level 23
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 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 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 Network.getAllByName is preferred to calling bindProcessToNetwork.

Parameters
network Network: The Network to bind the current process to, or null to clear the current binding.

Returns
boolean true on success, false if the Network is no longer valid.

createSocketKeepalive

Added in API level 29
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.

Parameters
network Network: The Network the socket is on.
This value cannot be null.

socket IpSecManager.UdpEncapsulationSocket: The socket that needs to be kept alive.
This value cannot be null.

source InetAddress: The source address of the UdpEncapsulationSocket.
This value cannot be null.

destination InetAddress: The destination address of the UdpEncapsulationSocket.
This value cannot be null.

executor Executor: The executor on which callback will be invoked. The provided 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 Executor, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use Context.getMainExecutor(). Otherwise, provide an Executor that dispatches to an appropriate thread.

callback SocketKeepalive.Callback: A SocketKeepalive.Callback. Used for notifications about keepalive changes. Must be extended by applications that use this API.
This value cannot be null.

Returns
SocketKeepalive A SocketKeepalive object that can be used to control the keepalive on the given socket.
This value cannot be null.

getActiveNetwork

Added in API level 23
public Network getActiveNetwork ()

Returns a 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 Manifest.permission.ACCESS_NETWORK_STATE

Returns
Network a 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

getActiveNetworkInfo

Added in API level 1
Deprecated in API level 29
public NetworkInfo getActiveNetworkInfo ()

This method was deprecated in API level 29.
See 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 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 getNetworkInfo(android.net.Network) instead.
Requires Manifest.permission.ACCESS_NETWORK_STATE

Returns
NetworkInfo a NetworkInfo object for the current default network or null if no default network is currently active

getAllNetworkInfo

Added in API level 1
Deprecated in API level 23
public NetworkInfo[] getAllNetworkInfo ()

This method was deprecated in API level 23.
This method does not support multiple connected networks of the same type. Use getAllNetworks() and getNetworkInfo(android.net.Network) instead.

Returns connection status information about all network types supported by the device.
Requires Manifest.permission.ACCESS_NETWORK_STATE

Returns
NetworkInfo[] an array of NetworkInfo objects. Check each NetworkInfo.getType for which type each applies.
This value cannot be null.

getAllNetworks

Added in API level 21
Deprecated in API level 31
public Network[] 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 registerNetworkCallback(NetworkRequest,NetworkCallback) instead. Apps that desire to obtain information about networks that do not apply to them can use NetworkRequest.Builder.setIncludeOtherUidNetworks.

Returns an array of all Network currently tracked by the framework.
Requires Manifest.permission.ACCESS_NETWORK_STATE

Returns
Network[] an array of Network objects.
This value cannot be null.

getBackgroundDataSetting

Added in API level 3
Deprecated in API level 15
public boolean getBackgroundDataSetting ()

This method was deprecated in API level 15.
As of 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, 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 ACTION_BACKGROUND_DATA_SETTING_CHANGED.

Returns
boolean Whether background data usage is allowed.

getBoundNetworkForProcess

Added in API level 23
public Network getBoundNetworkForProcess ()

Returns the Network currently bound to this process via bindProcessToNetwork(Network), or null if no Network is explicitly bound.

Returns
Network Network to which this process is bound, or null.

getConnectionOwnerUid

Added in API level 29
public int getConnectionOwnerUid (int protocol, 
                InetSocketAddress local, 
                InetSocketAddress remote)

Returns the uid of the owner of a network connection.

Parameters
protocol int: The protocol of the connection. Only IPPROTO_TCP and IPPROTO_UDP currently supported.

local InetSocketAddress: The local InetSocketAddress of a connection.
This value cannot be null.

remote InetSocketAddress: The remote InetSocketAddress of a connection.
This value cannot be null.

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 Process.INVALID_UID if the connection is not found.

Throws
IllegalArgumentException if an unsupported protocol is requested.
SecurityException if the caller is not the active VpnService for the current user.

getDefaultProxy

Added in API level 23
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 Network using bindProcessToNetwork(Network) then that Network's proxy is returned, otherwise the default network's proxy is returned.

Returns
ProxyInfo the ProxyInfo for the current HTTP proxy, or null if no HTTP proxy is active.

getLinkProperties

Added in API level 21
public LinkProperties getLinkProperties (Network network)

Get the LinkProperties for the given Network. This will return null if the network is unknown.
Requires Manifest.permission.ACCESS_NETWORK_STATE

Parameters
network Network: The Network object identifying the network in question.
This value may be null.

Returns
LinkProperties The LinkProperties for the network, or null.

getMultipathPreference

Added in API level 26
public int getMultipathPreference (Network network)

Provides a hint to the calling application on whether it is desirable to use the multinetwork APIs (e.g., Network.openConnection, Network.bindSocket, 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 Manifest.permission.ACCESS_NETWORK_STATE

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.

Returns
int a bitwise OR of zero or more of the MULTIPATH_PREFERENCE_* constants.
Value is either 0 or a combination of the following:

getNetworkCapabilities

Added in API level 21
public NetworkCapabilities getNetworkCapabilities (Network network)

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