Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Constants](https://developer.android.com/reference/android/net/NetworkCapabilities#constants) \| [Inherited Constants](https://developer.android.com/reference/android/net/NetworkCapabilities#inhconstants) \| [Fields](https://developer.android.com/reference/android/net/NetworkCapabilities#lfields) \| [Ctors](https://developer.android.com/reference/android/net/NetworkCapabilities#pubctors) \| [Methods](https://developer.android.com/reference/android/net/NetworkCapabilities#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/net/NetworkCapabilities#inhmethods)

# NetworkCapabilities

*** ** * ** ***


`
public

final

class
NetworkCapabilities
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


implements

https://developer.android.com/reference/android/os/Parcelable


`

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

<br />

*** ** * ** ***

Representation of the capabilities of an active network.

@see [](https://developer.android.com/training/basics/network-ops/reading-network-state>
this general guide</a> on how to use NetworkCapabilities and related classes.

<p>NetworkCapabilities represent what a network can do and what its
characteristics are like. The principal attribute of NetworkCapabilities
is in the capabilities bits, which are checked with
<code translate=)[hasCapability(int)](https://developer.android.com/reference/android/net/NetworkCapabilities#hasCapability(int)). See the list of capabilities and each
capability for a description of what it means.

Some prime examples include `NET_CAPABILITY_MMS`, which means that the
network is capable of sending MMS. A network without this capability
is not capable of sending MMS.

The `NET_CAPABILITY_INTERNET` capability means that the network is
configured to reach the general Internet. It may or may not actually
provide connectivity ; the `NET_CAPABILITY_VALIDATED` bit indicates that
the system found actual connectivity to the general Internet the last
time it checked. Apps interested in actual connectivity should usually
look at both these capabilities.

The `NET_CAPABILITY_NOT_METERED` capability is set for networks that
do not bill the user for consumption of bytes. Applications are
encouraged to consult this to determine appropriate usage, and to
limit usage of metered network where possible, including deferring
big downloads until such a time that an unmetered network is connected.
Also see `https://developer.android.com/reference/android/app/job/JobScheduler` to help with scheduling such
downloads, in particular
`https://developer.android.com/reference/android/app/job/JobInfo.Builder#setRequiredNetwork(android.net.NetworkRequest)`.

NetworkCapabilities contain a number of other capabilities that
represent what modern networks can and can't do. Look up the individual
capabilities in this class to learn about each of them.

NetworkCapabilities typically represent attributes that can apply to
any network. The attributes that apply only to specific transports like
cellular or Wi-Fi can be found in the specifier (for requestable attributes)
or in the transport info (for non-requestable ones). See
`https://developer.android.com/reference/android/net/NetworkCapabilities#getNetworkSpecifier()` and `https://developer.android.com/reference/android/net/NetworkCapabilities#getTransportInfo()`. An app would
downcast these to the specific class for the transport they need if they
are interested in transport-specific attributes. Also see
`https://developer.android.com/reference/android/net/wifi/WifiNetworkSpecifier` or
`https://developer.android.com/reference/android/net/wifi/WifiInfo` for some examples of each of these.

NetworkCapabilities also contains other attributes like the estimated
upstream and downstream bandwidth and the specific transport of that
network (e.g. `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_CELLULAR`). Generally, apps should normally
have little reason to check for the type of transport ; for example, to
query whether a network costs money to the user, do not look at the
transport, but instead look at the absence or presence of
`https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_METERED` which will correctly account for
metered Wi-Fis and free of charge cell connections.

The system communicates with apps about connected networks and uses
NetworkCapabilities to express these capabilities about these networks.
Apps should register callbacks with the `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)`
or `https://developer.android.com/reference/android/net/ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,%20android.app.PendingIntent)` family of methods
to learn about the capabilities of a network on a continuous basis
and be able to react to changes to capabilities. For quick debugging Android also
provides `https://developer.android.com/reference/android/net/ConnectivityManager#getNetworkCapabilities(android.net.Network)`,
but the dynamic nature of networking makes this ill-suited to production
code since capabilities obtained in this way can go stale immediately.

Also see `https://developer.android.com/reference/android/net/NetworkRequest` which uses the same capabilities
together with `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)` for how to
request the system brings up the kind of network your application needs.

## Summary

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_CAPTIVE_PORTAL` Indicates that this network was found to have a captive portal in place last time it was probed. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#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` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_DUN` Indicates this is a network that has the ability to reach the carrier's DUN or tethering gateway. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#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` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_ENTERPRISE` Indicates that this network is intended for enterprise use. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_FOREGROUND` Indicates that this network is available for use by apps, and not a network that is being kept up in the background to facilitate fast network switching. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#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` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_HEAD_UNIT` Indicates that this network is connected to an automotive head unit. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_IA` Indicates this is a network that has the ability to reach a carrier's Initial Attach servers. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#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` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_INTERNET` Indicates that this network should be able to reach the internet. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_LOCAL_NETWORK` Indicates that this network is a local network. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_MCX` Indicates this is a network that has the ability to reach a carrier's Mission Critical servers. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#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` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_MMTEL` Indicates that this network has ability to support MMTEL (Multimedia Telephony service). |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_BANDWIDTH_CONSTRAINED` Indicates that this is not a bandwidth-constrained network. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_CONGESTED` Indicates that this network is not congested. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_METERED` Indicates that this network is unmetered. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_RESTRICTED` Indicates that this network is available for general use. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_ROAMING` Indicates that this network is not roaming. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_SUSPENDED` Indicates that this network is not currently suspended. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_VPN` Indicates that this network is not a VPN. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_PRIORITIZE_BANDWIDTH` Indicates that this network should be able to prioritize bandwidth for the internet. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_PRIORITIZE_LATENCY` Indicates that this network should be able to prioritize latency for the internet. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_PRIORITIZE_UNIFIED_COMMUNICATIONS` Indicates that this network is optimized for real-time unified communications, such as Over-the-Top (OTT) voice and video calls. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#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` | `https://developer.android.com/reference/android/net/NetworkCapabilities#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` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_TEMPORARILY_NOT_METERED` Indicates that this network is temporarily unmetered. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_TRUSTED` Indicates that the user has indicated implicit trust of this network. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_VALIDATED` Indicates that connectivity on this network was successfully validated. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_WIFI_P2P` Indicates this is a network that has the ability to reach a Wi-Fi direct peer. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#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` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_1` Enterprise capability identifier 1. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_2` Enterprise capability identifier 2. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_3` Enterprise capability identifier 3. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_4` Enterprise capability identifier 4. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_5` Enterprise capability identifier 5. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#SIGNAL_STRENGTH_UNSPECIFIED` Magic value that indicates no signal strength provided. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_BLUETOOTH` Indicates this network uses a Bluetooth transport. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_CELLULAR` Indicates this network uses a Cellular transport. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_ETHERNET` Indicates this network uses an Ethernet transport. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_LOWPAN` Indicates this network uses a LoWPAN transport. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_SATELLITE` Indicates this network uses a Satellite transport. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_THREAD` Indicates this network uses a Thread transport. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_USB` Indicates this network uses a USB transport. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_VPN` Indicates this network uses a VPN transport. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_WIFI` Indicates this network uses a Wi-Fi transport. |
| `int` | `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_WIFI_AWARE` Indicates this network uses a Wi-Fi Aware transport. |

| ### Inherited constants |
|---|
| From interface `https://developer.android.com/reference/android/os/Parcelable` |---|---| | `int` | `https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR` Descriptor bit used with `https://developer.android.com/reference/android/os/Parcelable#describeContents()`: indicates that the Parcelable object's flattened representation includes a file descriptor. | | `int` | `https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE` Flag for use with `https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)`: the object being written is a return value, that is the result of a function such as "`Parcelable someFunction()`", "`void someFunction(out Parcelable)`", or "`void someFunction(inout Parcelable)`". | |

| ### Fields ||
|---|---|
| ` public static final https://developer.android.com/reference/android/os/Parcelable.Creator<https://developer.android.com/reference/android/net/NetworkCapabilities>` | `https://developer.android.com/reference/android/net/NetworkCapabilities#CREATOR` |

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/net/NetworkCapabilities#NetworkCapabilities()() ` |
| ` https://developer.android.com/reference/android/net/NetworkCapabilities#NetworkCapabilities(android.net.NetworkCapabilities)(https://developer.android.com/reference/android/net/NetworkCapabilities nc) ` |

| ### Public methods ||
|---|---|
| ` int` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#describeContents()() ` Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. |
| ` boolean` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. |
| ` int[]` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#getCapabilities()() ` Gets all the capabilities set on this `NetworkCapability` instance. |
| ` int[]` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#getEnterpriseIds()() ` Get enteprise identifiers set. |
| ` int` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#getLinkDownstreamBandwidthKbps()() ` Retrieves the downstream bandwidth for this network in Kbps. |
| ` int` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#getLinkUpstreamBandwidthKbps()() ` Retrieves the upstream bandwidth for this network in Kbps. |
| ` https://developer.android.com/reference/android/net/NetworkSpecifier` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#getNetworkSpecifier()() ` Gets the optional bearer specific network specifier. |
| ` int` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#getOwnerUid()() ` Retrieves the UID of the app that owns this network. |
| ` int` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#getSignalStrength()() ` Retrieves the signal strength. |
| ` https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/Integer>` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#getSubscriptionIds()() ` Gets the subscription ID set that associated to this network or request. |
| ` https://developer.android.com/reference/android/net/TransportInfo` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#getTransportInfo()() ` Returns a transport-specific information container. |
| ` boolean` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#hasCapability(int)(int capability) ` Tests for the presence of a capability on this instance. |
| ` boolean` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#hasEnterpriseId(int)(int enterpriseId) ` Tests for the presence of an enterprise capability identifier on this instance. |
| ` boolean` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#hasTransport(int)(int transportType) ` Tests for the presence of a transport on this instance. |
| ` int` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#hashCode()() ` Returns a hash code value for the object. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#toString()() ` Returns a string representation of the object. |
| ` void` | ` https://developer.android.com/reference/android/net/NetworkCapabilities#writeToParcel(android.os.Parcel,%20int)(https://developer.android.com/reference/android/os/Parcel dest, int flags) ` Flatten this object in to a Parcel. |

| ### 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*. | ||
| From interface ` https://developer.android.com/reference/android/os/Parcelable ` |---|---| | ` abstract int` | ` https://developer.android.com/reference/android/os/Parcelable#describeContents()() ` Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. | | ` abstract void` | ` https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)(https://developer.android.com/reference/android/os/Parcel dest, int flags) ` Flatten this object in to a Parcel. | ||

## Constants

### NET_CAPABILITY_CAPTIVE_PORTAL

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

```
public static final int NET_CAPABILITY_CAPTIVE_PORTAL
```

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

<br />

Constant Value:

17
(0x00000011)


### NET_CAPABILITY_CBS

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

```
public static final 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.

<br />

Constant Value:

5
(0x00000005)


### NET_CAPABILITY_DUN

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

```
public static final int NET_CAPABILITY_DUN
```

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

<br />

Constant Value:

2
(0x00000002)


### NET_CAPABILITY_EIMS

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

```
public static final 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.

<br />

Constant Value:

10
(0x0000000a)


### NET_CAPABILITY_ENTERPRISE

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

```
public static final int NET_CAPABILITY_ENTERPRISE
```

Indicates that this network is intended for enterprise use.


5G URSP rules may indicate that all data should use a connection dedicated for enterprise
use. If the enterprise capability is requested, all enterprise traffic will be routed over
the connection with this capability.

<br />

Constant Value:

29
(0x0000001d)


### NET_CAPABILITY_FOREGROUND

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

```
public static final int NET_CAPABILITY_FOREGROUND
```

Indicates that this network is available for use by apps, and not a network that is being
kept up in the background to facilitate fast network switching.

<br />

Constant Value:

19
(0x00000013)


### NET_CAPABILITY_FOTA

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

```
public static final 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.

<br />

Constant Value:

3
(0x00000003)


### NET_CAPABILITY_HEAD_UNIT

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

```
public static final int NET_CAPABILITY_HEAD_UNIT
```

Indicates that this network is connected to an automotive head unit.

<br />

Constant Value:

32
(0x00000020)


### NET_CAPABILITY_IA

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

```
public static final int NET_CAPABILITY_IA
```

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

<br />

Constant Value:

7
(0x00000007)


### NET_CAPABILITY_IMS

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

```
public static final 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.

<br />

Constant Value:

4
(0x00000004)


### NET_CAPABILITY_INTERNET

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

```
public static final int NET_CAPABILITY_INTERNET
```

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

<br />

Constant Value:

12
(0x0000000c)


### NET_CAPABILITY_LOCAL_NETWORK

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

```
public static final int NET_CAPABILITY_LOCAL_NETWORK
```

Indicates that this network is a local network.

Local networks are networks where the device is not obtaining IP addresses from the
network, but advertising IP addresses itself. Examples of local networks are:

- USB tethering or Wi-Fi hotspot networks to which the device is sharing its Internet connectivity.
- Thread networks where the current device is the Thread Border Router.
- Wi-Fi P2P networks where the current device is the Group Owner.

Networks used to obtain Internet access are never local networks. Apps that target an SDK before `https://developer.android.com/reference/android/os/Build.VERSION_CODES#VANILLA_ICE_CREAM` will not see networks with this capability unless they explicitly set the NET_CAPABILITY_LOCAL_NETWORK in their NetworkRequests.

<br />

<br />

Constant Value:

36
(0x00000024)


### NET_CAPABILITY_MCX

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

```
public static final int NET_CAPABILITY_MCX
```

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

<br />

Constant Value:

23
(0x00000017)


### NET_CAPABILITY_MMS

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

```
public static final 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.

<br />

Constant Value:

0
(0x00000000)


### NET_CAPABILITY_MMTEL

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

```
public static final int NET_CAPABILITY_MMTEL
```

Indicates that this network has ability to support MMTEL (Multimedia Telephony service).

<br />

Constant Value:

33
(0x00000021)


### NET_CAPABILITY_NOT_BANDWIDTH_CONSTRAINED

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

```
public static final int NET_CAPABILITY_NOT_BANDWIDTH_CONSTRAINED
```

Indicates that this is not a bandwidth-constrained network.

Starting from `https://developer.android.com/reference/android/os/Build.VERSION_CODES#VANILLA_ICE_CREAM`, this capability is by default
set in `https://developer.android.com/reference/android/net/NetworkRequest`s and true for most networks.

If a network lacks this capability, it is bandwidth-constrained. Bandwidth constrained
networks cannot support high-bandwidth data transfers and applications that request and use
them must ensure that they limit bandwidth usage to below the values returned by
`https://developer.android.com/reference/android/net/NetworkCapabilities#getLinkDownstreamBandwidthKbps()` and `https://developer.android.com/reference/android/net/NetworkCapabilities#getLinkUpstreamBandwidthKbps()` and
limit the frequency of their network usage. If applications perform high-bandwidth data
transfers on constrained networks or perform network access too frequently, the system may
block the app's access to the network. The system may take other measures to reduce network
usage on constrained networks, such as disabling network access to apps that are not in the
foreground.

<br />

Constant Value:

37
(0x00000025)


### NET_CAPABILITY_NOT_CONGESTED

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

```
public static final int NET_CAPABILITY_NOT_CONGESTED
```

Indicates that this network is not congested.


When a network is congested, applications should defer network traffic
that can be done at a later time, such as uploading analytics.

<br />

Constant Value:

20
(0x00000014)


### NET_CAPABILITY_NOT_METERED

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

```
public static final int NET_CAPABILITY_NOT_METERED
```

Indicates that this network is unmetered.

<br />

Constant Value:

11
(0x0000000b)


### NET_CAPABILITY_NOT_RESTRICTED

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

```
public static final 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.

<br />

Constant Value:

13
(0x0000000d)


### NET_CAPABILITY_NOT_ROAMING

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

```
public static final int NET_CAPABILITY_NOT_ROAMING
```

Indicates that this network is not roaming.

<br />

Constant Value:

18
(0x00000012)


### NET_CAPABILITY_NOT_SUSPENDED

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

```
public static final int NET_CAPABILITY_NOT_SUSPENDED
```

Indicates that this network is not currently suspended.


When a network is suspended, the network's IP addresses and any connections
established on the network remain valid, but the network is temporarily unable
to transfer data. This can happen, for example, if a cellular network experiences
a temporary loss of signal, such as when driving through a tunnel, etc.
A network with this capability is not suspended, so is expected to be able to
transfer data.

<br />

Constant Value:

21
(0x00000015)


### NET_CAPABILITY_NOT_VPN

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

```
public static final 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.

<br />

Constant Value:

15
(0x0000000f)


### NET_CAPABILITY_PRIORITIZE_BANDWIDTH

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

```
public static final int NET_CAPABILITY_PRIORITIZE_BANDWIDTH
```

Indicates that this network should be able to prioritize bandwidth for the internet.

Apps targeting `https://developer.android.com/reference/android/os/Build.VERSION_CODES#UPSIDE_DOWN_CAKE` or higher, requesting
this capability with `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)` requires declaration in the
self-certified network capabilities. See `https://developer.android.com/reference/android/net/NetworkRequest` for the self-certification
documentation.

<br />

Constant Value:

35
(0x00000023)


### NET_CAPABILITY_PRIORITIZE_LATENCY

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

```
public static final int NET_CAPABILITY_PRIORITIZE_LATENCY
```

Indicates that this network should be able to prioritize latency for the internet.

Apps targeting `https://developer.android.com/reference/android/os/Build.VERSION_CODES#UPSIDE_DOWN_CAKE` or higher, requesting
this capability with `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)` requires declaration in the
self-certified network capabilities. See `https://developer.android.com/reference/android/net/NetworkRequest` for the self-certification
documentation.

<br />

Constant Value:

34
(0x00000022)


### NET_CAPABILITY_PRIORITIZE_UNIFIED_COMMUNICATIONS

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

```
public static final int NET_CAPABILITY_PRIORITIZE_UNIFIED_COMMUNICATIONS
```

Indicates that this network is optimized for real-time unified communications,
such as Over-the-Top (OTT) voice and video calls.

This capability is intended specifically for applications that handle Over-the-Top (OTT)
voice and video calls. It is not intended for non ott applications.

This capability signals to the system that the network may offer a dedicated slice for
high-priority, low-latency data paths. It can be used in two ways:

- The system can request a network with this capability on behalf of an eligible application when it detects an active OTT call to improve Quality of Service (QoS).
- An ott application can request a network with this capability directly using `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)`.

This capability is a hint from the network and does not guarantee that it will
be used for any given call.

Apps targeting `https://developer.android.com/reference/android/os/Build.VERSION_CODES#UPSIDE_DOWN_CAKE` or higher, requesting
this capability with `https://developer.android.com/reference/android/net/ConnectivityManager#requestNetwork(android.net.NetworkRequest,%20android.app.PendingIntent)` requires declaration in the
self-certified network capabilities. See `https://developer.android.com/reference/android/net/NetworkRequest` for the self-certification
documentation.

<br />

Constant Value:

38
(0x00000026)


### NET_CAPABILITY_RCS

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

```
public static final 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.

<br />

Constant Value:

8
(0x00000008)


### NET_CAPABILITY_SUPL

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

```
public static final 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.

<br />

Constant Value:

1
(0x00000001)


### NET_CAPABILITY_TEMPORARILY_NOT_METERED

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

```
public static final int NET_CAPABILITY_TEMPORARILY_NOT_METERED
```

Indicates that this network is temporarily unmetered.


This capability will be set for networks that are generally metered, but are currently
unmetered, e.g., because the user is in a particular area. This capability can be changed at
any time. When it is removed, applications are responsible for stopping any data transfer
that should not occur on a metered network.
Note that most apps should use `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_METERED` instead. For more
information, see https://developer.android.com/about/versions/11/features/5g#meteredness.

<br />

Constant Value:

25
(0x00000019)


### NET_CAPABILITY_TRUSTED

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

```
public static final 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.

<br />

Constant Value:

14
(0x0000000e)


### NET_CAPABILITY_VALIDATED

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

```
public static final 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.

<br />

Constant Value:

16
(0x00000010)


### NET_CAPABILITY_WIFI_P2P

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

```
public static final int NET_CAPABILITY_WIFI_P2P
```

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

<br />

Constant Value:

6
(0x00000006)


### NET_CAPABILITY_XCAP

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

```
public static final 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.

<br />

Constant Value:

9
(0x00000009)


### NET_ENTERPRISE_ID_1

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

```
public static final int NET_ENTERPRISE_ID_1
```

Enterprise capability identifier 1. It will be used to uniquely identify specific
enterprise network.

<br />

Constant Value:

1
(0x00000001)


### NET_ENTERPRISE_ID_2

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

```
public static final int NET_ENTERPRISE_ID_2
```

Enterprise capability identifier 2. It will be used to uniquely identify specific
enterprise network.

<br />

Constant Value:

2
(0x00000002)


### NET_ENTERPRISE_ID_3

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

```
public static final int NET_ENTERPRISE_ID_3
```

Enterprise capability identifier 3. It will be used to uniquely identify specific
enterprise network.

<br />

Constant Value:

3
(0x00000003)


### NET_ENTERPRISE_ID_4

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

```
public static final int NET_ENTERPRISE_ID_4
```

Enterprise capability identifier 4. It will be used to uniquely identify specific
enterprise network.

<br />

Constant Value:

4
(0x00000004)


### NET_ENTERPRISE_ID_5

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

```
public static final int NET_ENTERPRISE_ID_5
```

Enterprise capability identifier 5. It will be used to uniquely identify specific
enterprise network.

<br />

Constant Value:

5
(0x00000005)


### SIGNAL_STRENGTH_UNSPECIFIED

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

```
public static final int SIGNAL_STRENGTH_UNSPECIFIED
```

Magic value that indicates no signal strength provided. A request specifying this value is
always satisfied.

<br />

Constant Value:

-2147483648
(0x80000000)


### TRANSPORT_BLUETOOTH

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

```
public static final int TRANSPORT_BLUETOOTH
```

Indicates this network uses a Bluetooth transport.

<br />

Constant Value:

2
(0x00000002)


### TRANSPORT_CELLULAR

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

```
public static final int TRANSPORT_CELLULAR
```

Indicates this network uses a Cellular transport.

<br />

Constant Value:

0
(0x00000000)


### TRANSPORT_ETHERNET

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

```
public static final int TRANSPORT_ETHERNET
```

Indicates this network uses an Ethernet transport.

<br />

Constant Value:

3
(0x00000003)


### TRANSPORT_LOWPAN

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

```
public static final int TRANSPORT_LOWPAN
```

Indicates this network uses a LoWPAN transport.

<br />

Constant Value:

6
(0x00000006)


### TRANSPORT_SATELLITE

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

```
public static final int TRANSPORT_SATELLITE
```

Indicates this network uses a Satellite transport.

<br />

Constant Value:

10
(0x0000000a)


### TRANSPORT_THREAD

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

```
public static final int TRANSPORT_THREAD
```

Indicates this network uses a Thread transport.

<br />

Constant Value:

9
(0x00000009)


### TRANSPORT_USB

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

```
public static final int TRANSPORT_USB
```

Indicates this network uses a USB transport.

<br />

Constant Value:

8
(0x00000008)


### TRANSPORT_VPN

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

```
public static final int TRANSPORT_VPN
```

Indicates this network uses a VPN transport.

<br />

Constant Value:

4
(0x00000004)


### TRANSPORT_WIFI

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

```
public static final int TRANSPORT_WIFI
```

Indicates this network uses a Wi-Fi transport.

<br />

Constant Value:

1
(0x00000001)


### TRANSPORT_WIFI_AWARE

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

```
public static final int TRANSPORT_WIFI_AWARE
```

Indicates this network uses a Wi-Fi Aware transport.

<br />

Constant Value:

5
(0x00000005)


## Fields

### CREATOR

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

```
public static final Creator<NetworkCapabilities> CREATOR
```

<br />

<br />

## Public constructors

### NetworkCapabilities

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

```
public NetworkCapabilities ()
```

<br />

<br />

### NetworkCapabilities

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

```
public NetworkCapabilities (NetworkCapabilities nc)
```

<br />

<br />

| Parameters ||
|---|---|
| `nc` | `NetworkCapabilities` <br /> |

## Public methods

### describeContents

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

```
public 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 `https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)`,
the return value of this method must include the
`https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR` bit.

<br />

| Returns ||
|---|---|
| `int` | a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either `0` or - `https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR` |

### equals

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

```
public 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`.


An equivalence relation partitions the elements it operates on
into *equivalence classes*; all the members of an
equivalence class are equal to each other. Members of an
equivalence class are substitutable for each other, at least
for some purposes.

<br />

| Parameters ||
|---|---|
| `obj` | `Object`: This value may be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | `true` if this object is the same as the obj argument; `false` otherwise. <br /> |

### getCapabilities

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

```
public int[] getCapabilities ()
```

Gets all the capabilities set on this `NetworkCapability` instance.

<br />

| Returns ||
|---|---|
| `int[]` | an array of capability values for this instance. This value cannot be `null`. Value is one of the following: - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_MMS` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_SUPL` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_DUN` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_FOTA` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_IMS` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_CBS` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_WIFI_P2P` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_IA` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_RCS` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_XCAP` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_EIMS` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_METERED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_INTERNET` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_RESTRICTED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_TRUSTED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_VPN` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_VALIDATED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_CAPTIVE_PORTAL` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_ROAMING` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_FOREGROUND` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_CONGESTED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_SUSPENDED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_MCX` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_TEMPORARILY_NOT_METERED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_ENTERPRISE` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_HEAD_UNIT` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_MMTEL` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_PRIORITIZE_LATENCY` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_PRIORITIZE_BANDWIDTH` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_LOCAL_NETWORK` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_BANDWIDTH_CONSTRAINED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_PRIORITIZE_UNIFIED_COMMUNICATIONS` |

### getEnterpriseIds

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

```
public int[] getEnterpriseIds ()
```

Get enteprise identifiers set.

Get all the enterprise capabilities identifier set on this `NetworkCapability`
If NET_CAPABILITY_ENTERPRISE is set and no enterprise ID is set, it is
considered to have NET_CAPABILITY_ENTERPRISE by default.

<br />

| Returns ||
|---|---|
| `int[]` | all the enterprise capabilities identifier set. This value cannot be `null`. Value is one of the following: - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_1` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_2` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_3` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_4` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_5` |

### getLinkDownstreamBandwidthKbps

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

```
public int getLinkDownstreamBandwidthKbps ()
```

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

<br />

| Returns ||
|---|---|
| `int` | The estimated first hop downstream (network to device) bandwidth. <br /> |

### getLinkUpstreamBandwidthKbps

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

```
public int getLinkUpstreamBandwidthKbps ()
```

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

<br />

| Returns ||
|---|---|
| `int` | The estimated first hop upstream (device to network) bandwidth. <br /> |

### getNetworkSpecifier

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

```
public NetworkSpecifier getNetworkSpecifier ()
```

Gets the optional bearer specific network specifier. May be `null` if not set.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/NetworkSpecifier` | The optional `https://developer.android.com/reference/android/net/NetworkSpecifier` specifying the bearer specific network specifier or `null`. <br /> |

### getOwnerUid

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

```
public int getOwnerUid ()
```

Retrieves the UID of the app that owns this network.

For user privacy reasons, this field will only be populated if the following conditions
are met:

The caller is the network owner, AND one of the following sets of requirements is met:

1. The described Network is a VPN

OR:

1. The calling app is the network owner
2. The calling app has the ACCESS_FINE_LOCATION permission granted
3. The user's location toggle is on

Instances of NetworkCapabilities sent to apps without the appropriate permissions will have this field cleared out.


This field will only be populated for VPN and wifi network suggestor apps (i.e using
`https://developer.android.com/reference/android/net/wifi/WifiNetworkSuggestion`), and only for the
network they own. In the case of wifi network suggestors apps, this field is also location
sensitive, so the app needs to hold `https://developer.android.com/reference/android/Manifest.permission#ACCESS_FINE_LOCATION`
permission. If the app targets SDK version greater than or equal to
`https://developer.android.com/reference/android/os/Build.VERSION_CODES#S`, then they also need to use
`https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#FLAG_INCLUDE_LOCATION_INFO` to get the info in their callback. If the
apps targets SDK version equal to {`https://developer.android.com/reference/android/os/Build.VERSION_CODES#R`, this field will always be
included. The app will be blamed for location access if this field is included.

<br />

<br />

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

### getSignalStrength

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

```
public int getSignalStrength ()
```

Retrieves the signal strength.

<br />

| Returns ||
|---|---|
| `int` | The bearer-specific signal strength. <br /> |

### getSubscriptionIds

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

```
public Set<Integer> getSubscriptionIds ()
```

Gets the subscription ID set that associated to this network or request.

Instances of NetworkCapabilities will only have this field populated by the system if the
receiver holds the NETWORK_FACTORY permission. In all other cases, it will be the empty set.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/Integer>` | This value cannot be `null`. <br /> |

### getTransportInfo

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

```
public TransportInfo getTransportInfo ()
```

Returns a transport-specific information container. The application may cast this
container to a concrete sub-class based on its knowledge of the network request. The
application should be able to deal with a `null` return value or an invalid case,
e.g. use `instanceof` operator to verify expected type.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/TransportInfo` | A concrete implementation of the `https://developer.android.com/reference/android/net/TransportInfo` class or null if not available for the network. <br /> |

### hasCapability

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

```
public boolean hasCapability (int capability)
```

Tests for the presence of a capability on this instance.

<br />

| Parameters ||
|---|---|
| `capability` | `int`: the capability to be tested for. Value is one of the following: - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_MMS` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_SUPL` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_DUN` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_FOTA` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_IMS` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_CBS` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_WIFI_P2P` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_IA` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_RCS` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_XCAP` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_EIMS` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_METERED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_INTERNET` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_RESTRICTED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_TRUSTED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_VPN` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_VALIDATED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_CAPTIVE_PORTAL` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_ROAMING` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_FOREGROUND` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_CONGESTED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_SUSPENDED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_MCX` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_TEMPORARILY_NOT_METERED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_ENTERPRISE` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_HEAD_UNIT` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_MMTEL` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_PRIORITIZE_LATENCY` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_PRIORITIZE_BANDWIDTH` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_LOCAL_NETWORK` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_NOT_BANDWIDTH_CONSTRAINED` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_CAPABILITY_PRIORITIZE_UNIFIED_COMMUNICATIONS` |

| Returns ||
|---|---|
| `boolean` | `true` if set on this instance. <br /> |

### hasEnterpriseId

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

```
public boolean hasEnterpriseId (int enterpriseId)
```

Tests for the presence of an enterprise capability identifier on this instance.

If NET_CAPABILITY_ENTERPRISE is set and no enterprise ID is set, it is
considered to have NET_CAPABILITY_ENTERPRISE by default.

<br />

| Parameters ||
|---|---|
| `enterpriseId` | `int`: the enterprise capability identifier to be tested for. Value is one of the following: - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_1` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_2` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_3` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_4` - `https://developer.android.com/reference/android/net/NetworkCapabilities#NET_ENTERPRISE_ID_5` |

| Returns ||
|---|---|
| `boolean` | `true` if set on this instance. <br /> |

### hasTransport

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

```
public boolean hasTransport (int transportType)
```

Tests for the presence of a transport on this instance.

<br />

| Parameters ||
|---|---|
| `transportType` | `int`: the transport type to be tested for. Value is one of the following: - `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_CELLULAR` - `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_WIFI` - `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_BLUETOOTH` - `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_ETHERNET` - `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_VPN` - `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_WIFI_AWARE` - `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_LOWPAN` - `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_USB` - `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_THREAD` - `https://developer.android.com/reference/android/net/NetworkCapabilities#TRANSPORT_SATELLITE` |

| Returns ||
|---|---|
| `boolean` | `true` if set on this instance. <br /> |

### hashCode

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

```
public 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
`https://developer.android.com/reference/java/util/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 `https://developer.android.com/reference/java/lang/Object#equals(java.lang.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 `https://developer.android.com/reference/java/lang/Object#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.

<br />

<br />

| Returns ||
|---|---|
| `int` | a hash code value for this object. <br /> |

### toString

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

```
public String toString ()
```

Returns a string representation of the object.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | This value cannot be `null`. <br /> |

### writeToParcel

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

```
public void writeToParcel (Parcel dest, 
                int flags)
```

Flatten this object in to a Parcel.

<br />

| Parameters ||
|---|---|
| `dest` | `Parcel`: The Parcel in which the object should be written. This value cannot be `null`. <br /> |
| `flags` | `int`: Additional flags about how the object should be written. May be 0 or `https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE`. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE` |