Most visited

Recently visited

Added in API level 21

NetworkCapabilities

public final class NetworkCapabilities
extends Object implements Parcelable

java.lang.Object
   ↳ android.net.NetworkCapabilities


This class represents the capabilities of a network. This is used both to specify needs to ConnectivityManager and when inspecting a network. Note that this replaces the old TYPE_MOBILE method of network selection. Rather than indicate a need for Wi-Fi because an application needs high bandwidth and risk obsolescence when a new, fast network appears (like LTE), the application should specify it needs high bandwidth. Similarly if an application needs an unmetered network for a bulk transfer it can specify that rather than assuming all cellular based connections are metered and all Wi-Fi based connections are not.

Summary

Constants

int NET_CAPABILITY_CAPTIVE_PORTAL

Indicates that this network was found to have a captive portal in place last time it was probed.

int NET_CAPABILITY_CBS

Indicates this is a network that has the ability to reach the carrier's CBS servers, used for carrier specific services.

int NET_CAPABILITY_DUN

Indicates this is a network that has the ability to reach the carrier's DUN or tethering gateway.

int NET_CAPABILITY_EIMS

Indicates this is a network that has the ability to reach a carrier's Emergency IMS servers or other services, used for network signaling during emergency calls.

int NET_CAPABILITY_FOTA

Indicates this is a network that has the ability to reach the carrier's FOTA portal, used for over the air updates.

int NET_CAPABILITY_IA

Indicates this is a network that has the ability to reach a carrier's Initial Attach servers.

int NET_CAPABILITY_IMS

Indicates this is a network that has the ability to reach the carrier's IMS servers, used for network registration and signaling.

int NET_CAPABILITY_INTERNET

Indicates that this network should be able to reach the internet.

int NET_CAPABILITY_MMS

Indicates this is a network that has the ability to reach the carrier's MMSC for sending and receiving MMS messages.

int NET_CAPABILITY_NOT_METERED

Indicates that this network is unmetered.

int NET_CAPABILITY_NOT_RESTRICTED

Indicates that this network is available for general use.

int NET_CAPABILITY_NOT_VPN

Indicates that this network is not a VPN.

int NET_CAPABILITY_RCS

Indicates this is a network that has the ability to reach a carrier's RCS servers, used for Rich Communication Services.

int NET_CAPABILITY_SUPL

Indicates this is a network that has the ability to reach the carrier's SUPL server, used to retrieve GPS information.

int NET_CAPABILITY_TRUSTED

Indicates that the user has indicated implicit trust of this network.

int NET_CAPABILITY_VALIDATED

Indicates that connectivity on this network was successfully validated.

int NET_CAPABILITY_WIFI_P2P

Indicates this is a network that has the ability to reach a Wi-Fi direct peer.

int NET_CAPABILITY_XCAP

Indicates this is a network that has the ability to reach a carrier's XCAP servers, used for configuration and control.

int TRANSPORT_BLUETOOTH

Indicates this network uses a Bluetooth transport.

int TRANSPORT_CELLULAR

Indicates this network uses a Cellular transport.

int TRANSPORT_ETHERNET

Indicates this network uses an Ethernet transport.

int TRANSPORT_VPN

Indicates this network uses a VPN transport.

int TRANSPORT_WIFI

Indicates this network uses a Wi-Fi transport.

Inherited constants

From interface android.os.Parcelable

Fields

public static final Creator<NetworkCapabilities> CREATOR

Public constructors

NetworkCapabilities(NetworkCapabilities nc)

Public methods

int describeContents()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.

boolean equals(Object obj)

Indicates whether some other object is "equal to" this one.

int getLinkDownstreamBandwidthKbps()

Retrieves the downstream bandwidth for this network in Kbps.

int getLinkUpstreamBandwidthKbps()

Retrieves the upstream bandwidth for this network in Kbps.

boolean hasCapability(int capability)

Tests for the presence of a capabilitity on this instance.

boolean hasTransport(int transportType)

Tests for the presence of a transport on this instance.

int hashCode()

Returns a hash code value for the object.

String toString()

Returns a string representation of the object.

void writeToParcel(Parcel dest, int flags)

Flatten this object in to a Parcel.

Inherited methods

From class java.lang.Object
From interface android.os.Parcelable

Constants

NET_CAPABILITY_CAPTIVE_PORTAL

Added in API level 23
int NET_CAPABILITY_CAPTIVE_PORTAL

Indicates that this network was found to have a captive portal in place last time it was probed.

Constant Value: 17 (0x00000011)

NET_CAPABILITY_CBS

Added in API level 21
int NET_CAPABILITY_CBS

Indicates this is a network that has the ability to reach the carrier's CBS servers, used for carrier specific services.

Constant Value: 5 (0x00000005)

NET_CAPABILITY_DUN

Added in API level 21
int NET_CAPABILITY_DUN

Indicates this is a network that has the ability to reach the carrier's DUN or tethering gateway.

Constant Value: 2 (0x00000002)

NET_CAPABILITY_EIMS

Added in API level 21
int NET_CAPABILITY_EIMS

Indicates this is a network that has the ability to reach a carrier's Emergency IMS servers or other services, used for network signaling during emergency calls.

Constant Value: 10 (0x0000000a)

NET_CAPABILITY_FOTA

Added in API level 21
int NET_CAPABILITY_FOTA

Indicates this is a network that has the ability to reach the carrier's FOTA portal, used for over the air updates.

Constant Value: 3 (0x00000003)

NET_CAPABILITY_IA

Added in API level 21
int NET_CAPABILITY_IA

Indicates this is a network that has the ability to reach a carrier's Initial Attach servers.

Constant Value: 7 (0x00000007)

NET_CAPABILITY_IMS

Added in API level 21
int NET_CAPABILITY_IMS

Indicates this is a network that has the ability to reach the carrier's IMS servers, used for network registration and signaling.

Constant Value: 4 (0x00000004)

NET_CAPABILITY_INTERNET

Added in API level 21
int NET_CAPABILITY_INTERNET

Indicates that this network should be able to reach the internet.

Constant Value: 12 (0x0000000c)

NET_CAPABILITY_MMS

Added in API level 21
int NET_CAPABILITY_MMS

Indicates this is a network that has the ability to reach the carrier's MMSC for sending and receiving MMS messages.

Constant Value: 0 (0x00000000)

NET_CAPABILITY_NOT_METERED

Added in API level 21
int NET_CAPABILITY_NOT_METERED

Indicates that this network is unmetered.

Constant Value: 11 (0x0000000b)

NET_CAPABILITY_NOT_RESTRICTED

Added in API level 21
int NET_CAPABILITY_NOT_RESTRICTED

Indicates that this network is available for general use. If this is not set applications should not attempt to communicate on this network. Note that this is simply informative and not enforcement - enforcement is handled via other means. Set by default.

Constant Value: 13 (0x0000000d)

NET_CAPABILITY_NOT_VPN

Added in API level 21
int NET_CAPABILITY_NOT_VPN

Indicates that this network is not a VPN. This capability is set by default and should be explicitly cleared for VPN networks.

Constant Value: 15 (0x0000000f)

NET_CAPABILITY_RCS

Added in API level 21
int NET_CAPABILITY_RCS

Indicates this is a network that has the ability to reach a carrier's RCS servers, used for Rich Communication Services.

Constant Value: 8 (0x00000008)

NET_CAPABILITY_SUPL

Added in API level 21
int NET_CAPABILITY_SUPL

Indicates this is a network that has the ability to reach the carrier's SUPL server, used to retrieve GPS information.

Constant Value: 1 (0x00000001)

NET_CAPABILITY_TRUSTED

Added in API level 21
int NET_CAPABILITY_TRUSTED

Indicates that the user has indicated implicit trust of this network. This generally means it's a sim-selected carrier, a plugged in ethernet, a paired BT device or a wifi the user asked to connect to. Untrusted networks are probably limited to unknown wifi AP. Set by default.

Constant Value: 14 (0x0000000e)

NET_CAPABILITY_VALIDATED

Added in API level 23
int NET_CAPABILITY_VALIDATED

Indicates that connectivity on this network was successfully validated. For example, for a network with NET_CAPABILITY_INTERNET, it means that Internet connectivity was successfully detected.

Constant Value: 16 (0x00000010)

NET_CAPABILITY_WIFI_P2P

Added in API level 21
int NET_CAPABILITY_WIFI_P2P

Indicates this is a network that has the ability to reach a Wi-Fi direct peer.

Constant Value: 6 (0x00000006)

NET_CAPABILITY_XCAP

Added in API level 21
int NET_CAPABILITY_XCAP

Indicates this is a network that has the ability to reach a carrier's XCAP servers, used for configuration and control.

Constant Value: 9 (0x00000009)

TRANSPORT_BLUETOOTH

Added in API level 21
int TRANSPORT_BLUETOOTH

Indicates this network uses a Bluetooth transport.

Constant Value: 2 (0x00000002)

TRANSPORT_CELLULAR

Added in API level 21
int TRANSPORT_CELLULAR

Indicates this network uses a Cellular transport.

Constant Value: 0 (0x00000000)

TRANSPORT_ETHERNET

Added in API level 21
int TRANSPORT_ETHERNET

Indicates this network uses an Ethernet transport.

Constant Value: 3 (0x00000003)

TRANSPORT_VPN

Added in API level 21
int TRANSPORT_VPN

Indicates this network uses a VPN transport.

Constant Value: 4 (0x00000004)

TRANSPORT_WIFI

Added in API level 21
int TRANSPORT_WIFI

Indicates this network uses a Wi-Fi transport.

Constant Value: 1 (0x00000001)

Fields

CREATOR

Added in API level 21
Creator<NetworkCapabilities> CREATOR

Public constructors

NetworkCapabilities

Added in API level 21
NetworkCapabilities (NetworkCapabilities nc)

Parameters
nc NetworkCapabilities

Public methods

describeContents

Added in API level 21
int describeContents ()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. For example, if the object will include a file descriptor in the output of writeToParcel(Parcel, int), the return value of this method must include the CONTENTS_FILE_DESCRIPTOR bit.

Returns
int a bitmask indicating the set of special object types marshaled by this Parcelable object instance.

equals

Added in API level 21
boolean equals (Object obj)

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x and y, this method returns true if and only if x and y refer to the same object (x == y has the value true).

Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes.

Parameters
obj Object: the reference object with which to compare.
Returns
boolean true if this object is the same as the obj argument; false otherwise.

getLinkDownstreamBandwidthKbps

Added in API level 21
int getLinkDownstreamBandwidthKbps ()

Retrieves the downstream bandwidth for this network in Kbps. This always only refers to the estimated first hop transport bandwidth.

Returns
int The estimated first hop downstream (network to device) bandwidth.

getLinkUpstreamBandwidthKbps

Added in API level 21
int getLinkUpstreamBandwidthKbps ()

Retrieves the upstream bandwidth for this network in Kbps. This always only refers to the estimated first hop transport bandwidth.

Returns
int The estimated first hop upstream (device to network) bandwidth.

hasCapability

Added in API level 21
boolean hasCapability (int capability)

Tests for the presence of a capabilitity on this instance.

Parameters
capability int: the NetworkCapabilities.NET_CAPABILITY_* to be tested for.
Returns
boolean true if set on this instance.

hasTransport

Added in API level 21
boolean hasTransport (int transportType)

Tests for the presence of a transport on this instance.

Parameters
transportType int: the NetworkCapabilities.TRANSPORT_* to be tested for.
Returns
boolean true if set on this instance.

hashCode

Added in API level 21
int hashCode ()

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals(java.lang.Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.

As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)

Returns
int a hash code value for this object.

toString

Added in API level 21
String toString ()

Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

writeToParcel

Added in API level 21
void writeToParcel (Parcel dest, 
                int flags)

Flatten this object in to a Parcel.

Parameters
dest Parcel: The Parcel in which the object should be written.
flags int: Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE.

Hooray!