ConnectivityManager.NetworkCallback
  public
  static
  
  
  class
  ConnectivityManager.NetworkCallback
  
    extends Object
  
  
  
  
  
  
| java.lang.Object | |
| ↳ | android.net.ConnectivityManager.NetworkCallback | 
Base class for NetworkRequest callbacks. Used for notifications about network
 changes. Should be extended by applications wanting notifications.
 A NetworkCallback is registered by calling
 ConnectivityManager.requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback),
 ConnectivityManager.registerNetworkCallback(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback),
 or ConnectivityManager.registerDefaultNetworkCallback(android.net.ConnectivityManager.NetworkCallback). A NetworkCallback is
 unregistered by calling ConnectivityManager.unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback).
 A NetworkCallback should be registered at most once at any time.
 A NetworkCallback that has been unregistered can be registered again.
Summary
| Constants | |
|---|---|
| int | FLAG_INCLUDE_LOCATION_INFOInclusion of this flag means location-sensitive redaction requests keeping location info. | 
| Public constructors | |
|---|---|
| 
      NetworkCallback()
       | |
| 
      NetworkCallback(int flags)
       | |
| Public methods | |
|---|---|
| 
        
        
        
        
        
        void | 
      onAvailable(Network network)
      Called when the framework connects and has declared a new network ready for use. | 
| 
        
        
        
        
        
        void | 
      onBlockedStatusChanged(Network network, boolean blocked)
      Called when access to the specified network is blocked or unblocked. | 
| 
        
        
        
        
        
        void | 
      onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities)
      Called when the network corresponding to this request changes capabilities but still satisfies the requested criteria. | 
| 
        
        
        
        
        
        void | 
      onLinkPropertiesChanged(Network network, LinkProperties linkProperties)
      Called when the network corresponding to this request changes  | 
| 
        
        
        
        
        
        void | 
      onLosing(Network network, int maxMsToLive)
      Called when the network is about to be lost, typically because there are no outstanding requests left for it. | 
| 
        
        
        
        
        
        void | 
      onLost(Network network)
      Called when a network disconnects or otherwise no longer satisfies this request or callback. | 
| 
        
        
        
        
        
        void | 
      onReserved(NetworkCapabilities networkCapabilities)
      Called when a network is reserved. | 
| 
        
        
        
        
        
        void | 
      onUnavailable()
      If the callback was registered with one of the  | 
| Inherited methods | |
|---|---|
Constants
FLAG_INCLUDE_LOCATION_INFO
public static final int FLAG_INCLUDE_LOCATION_INFO
Inclusion of this flag means location-sensitive redaction requests keeping location info.
 Some objects like NetworkCapabilities may contain location-sensitive information.
 Prior to Android 12, this information is always returned to apps holding the appropriate
 permission, possibly noting that the app has used location.
 
In Android 12 and above, by default the sent objects do not contain any location
 information, even if the app holds the necessary permissions, and the system does not
 take note of location usage by the app. Apps can request that location information is
 included, in which case the system will check location permission and the location
 toggle state, and take note of location usage by the app if any such information is
 returned.
 Use this flag to include any location sensitive data in NetworkCapabilities sent
 via onCapabilitiesChanged(android.net.Network, android.net.NetworkCapabilities).
 
These include:
NetworkCapabilities.getTransportInfo()) like WifiInfo
 contain location sensitive information.
 NetworkCapabilities.getOwnerUid() is location
 sensitive for wifi suggestor apps (i.e using
 WifiNetworkSuggestion).Note:
NetworkCapabilities provided via the callback does
 not include location sensitive information.
    
      Constant Value: 1 (0x00000001)
Public constructors
NetworkCallback
public NetworkCallback (int flags)
| Parameters | |
|---|---|
| flags | int: Value is either0or a combination of android.net.ConnectivityManager.NetworkCallback.FLAG_NONE, andFLAG_INCLUDE_LOCATION_INFO | 
Public methods
onAvailable
public void onAvailable (Network network)
Called when the framework connects and has declared a new network ready for use.
For callbacks registered with ConnectivityManager.registerNetworkCallback(NetworkRequest, PendingIntent), multiple networks may
 be available at the same time, and onAvailable will be called for each of these as they
 appear.
 
For callbacks registered with ConnectivityManager.requestNetwork(NetworkRequest, PendingIntent) and
 ConnectivityManager.registerDefaultNetworkCallback(NetworkCallback), this means the network passed as an argument
 is the new best network for this request and is now tracked by this callback ; this
 callback will no longer receive method calls about other networks that may have been
 passed to this method previously. The previously-best network may have disconnected, or
 it may still be around and the newly-best network may simply be better.
 
Starting with Build.VERSION_CODES.O, this will always immediately
 be followed by a call to onCapabilitiesChanged(android.net.Network, android.net.NetworkCapabilities)
 then by a call to onLinkPropertiesChanged(android.net.Network, android.net.LinkProperties), and a call
 to onBlockedStatusChanged(android.net.Network, boolean).
 
Do NOT call ConnectivityManager.getNetworkCapabilities(android.net.Network) or
 ConnectivityManager.getLinkProperties(android.net.Network) or other synchronous ConnectivityManager methods in
 this callback as this is prone to race conditions (there is no guarantee the objects
 returned by these methods will be current). Instead, wait for a call to
 onCapabilitiesChanged(android.net.Network, android.net.NetworkCapabilities) and
 onLinkPropertiesChanged(android.net.Network, android.net.LinkProperties) whose arguments are guaranteed
 to be well-ordered with respect to other callbacks.
| Parameters | |
|---|---|
| network | Network: TheNetworkof the satisfying network.
 This value cannot benull. | 
onBlockedStatusChanged
public void onBlockedStatusChanged (Network network, boolean blocked)
Called when access to the specified network is blocked or unblocked.
Do NOT call ConnectivityManager.getNetworkCapabilities(android.net.Network) or
 ConnectivityManager.getLinkProperties(android.net.Network) or other synchronous ConnectivityManager methods in
 this callback as this is prone to race conditions : calling these methods while in a
 callback may return an outdated or even a null object.
| Parameters | |
|---|---|
| network | Network: TheNetworkwhose blocked status has changed.
 This value cannot benull. | 
| blocked | boolean: The blocked status of thisNetwork. | 
onCapabilitiesChanged
public void onCapabilitiesChanged (Network network, NetworkCapabilities networkCapabilities)
Called when the network corresponding to this request changes capabilities but still satisfies the requested criteria.
Starting with Build.VERSION_CODES.O this method is guaranteed
 to be called immediately after onAvailable(Network).
 
Do NOT call ConnectivityManager.getLinkProperties(android.net.Network) or other synchronous
 ConnectivityManager methods in this callback as this is prone to race conditions :
 calling these methods while in a callback may return an outdated or even a null object.
| Parameters | |
|---|---|
| network | Network: TheNetworkwhose capabilities have changed.
 This value cannot benull. | 
| networkCapabilities | NetworkCapabilities: The newNetworkCapabilitiesfor this
                            network.
 This value cannot benull. | 
onLinkPropertiesChanged
public void onLinkPropertiesChanged (Network network, LinkProperties linkProperties)
Called when the network corresponding to this request changes LinkProperties.
 
Starting with Build.VERSION_CODES.O this method is guaranteed
 to be called immediately after onAvailable(Network).
 
Do NOT call ConnectivityManager.getNetworkCapabilities(android.net.Network) or other synchronous
 ConnectivityManager methods in this callback as this is prone to race conditions :
 calling these methods while in a callback may return an outdated or even a null object.
| Parameters | |
|---|---|
| network | Network: TheNetworkwhose link properties have changed.
 This value cannot benull. | 
| linkProperties | LinkProperties: The newLinkPropertiesfor this network.
 This value cannot benull. | 
onLosing
public void onLosing (Network network, int maxMsToLive)
Called when the network is about to be lost, typically because there are no outstanding
 requests left for it. This may be paired with a NetworkCallback.onAvailable call
 with the new replacement network for graceful handover. This method is not guaranteed
 to be called before NetworkCallback.onLost is called, for example in case a
 network is suddenly disconnected.
 
Do NOT call ConnectivityManager.getNetworkCapabilities(android.net.Network) or
 ConnectivityManager.getLinkProperties(android.net.Network) or other synchronous ConnectivityManager methods in
 this callback as this is prone to race conditions ; calling these methods while in a
 callback may return an outdated or even a null object.
| Parameters | |
|---|---|
| network | Network: TheNetworkthat is about to be lost.
 This value cannot benull. | 
| maxMsToLive | int: The time in milliseconds the system intends to keep the network
                    connected for graceful handover; note that the network may still
                    suffer a hard loss at any time. | 
onLost
public void onLost (Network network)
Called when a network disconnects or otherwise no longer satisfies this request or callback.
If the callback was registered with requestNetwork() or registerDefaultNetworkCallback(), it will only be invoked against the last network returned by onAvailable() when that network is lost and no other network satisfies the criteria of the request.
If the callback was registered with registerNetworkCallback() it will be called for each network which no longer satisfies the criteria of the callback.
Do NOT call ConnectivityManager.getNetworkCapabilities(android.net.Network) or
 ConnectivityManager.getLinkProperties(android.net.Network) or other synchronous ConnectivityManager methods in
 this callback as this is prone to race conditions ; calling these methods while in a
 callback may return an outdated or even a null object.
| Parameters | |
|---|---|
| network | Network: TheNetworklost.
 This value cannot benull. | 
onReserved
public void onReserved (NetworkCapabilities networkCapabilities)
Called when a network is reserved.
 The reservation includes the NetworkCapabilities that uniquely describe the
 network that was reserved. the caller communicates this information to hardware or
 software components on or off-device to instruct them to create a network matching this
 reservation.
 onReserved(android.net.NetworkCapabilities) is called at most once and is guaranteed to be
 called before any other callback unless the reservation is unavailable.
 Once a reservation is made, the reserved NetworkCapabilities will not be updated,
 and the reservation remains in place until the reserved network connects or onUnavailable() is called.
| Parameters | |
|---|---|
| networkCapabilities | NetworkCapabilities: TheNetworkCapabilitiesof the reservation.
 This value cannot benull. | 
onUnavailable
public void onUnavailable ()
If the callback was registered with one of the requestNetwork methods, this will
 be called if no network is found within the timeout specified in ConnectivityManager.requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback, int) call or if the requested network
 request cannot be fulfilled (whether or not a timeout was specified).
 If the callback was registered when reserving a network, this method indicates that the
 reservation is removed. It can be called when the reservation is requested, because the
 system could not satisfy the reservation, or after the reserved network connects.
 When this callback is invoked the associated NetworkRequest will have already
 been removed and released, as if ConnectivityManager.unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback) had
 been called.
