NetworkRequest
open class NetworkRequest : Parcelable
kotlin.Any | |
↳ | android.net.NetworkRequest |
An object describing a network that the application is interested in.
@see NetworkRequest.Builder and used to request a network via android.net.ConnectivityManager#requestNetwork or to listen for changes via the android.net.ConnectivityManager#registerNetworkCallback family of functions.
android.net.ConnectivityManager#requestNetwork will try to find a connected network matching the NetworkRequest, and return it if there is one. As long as the request is outstanding, the system will try to find the best possible network that matches the request. The request will keep up the currently best connected network, and if a better one is found (e.g. cheaper or faster) the system will bring up that better network to better serve the request. A request filed with android.net.ConnectivityManager#requestNetwork will only match one network at a time (the one the system thinks is best), even if other networks can match the request that are being kept up by other requests. For example, an application needing a network with NetworkCapabilities#NET_CAPABILITY_INTERNET
should use android.net.ConnectivityManager#requestNetwork to request the system keeps one up. A general cellular network can satisfy this request, but if the system finds a free Wi-Fi network which is expected to be faster, it will try and connect to that Wi-Fi network and switch the request over to it once it is connected. The cell network may stay connected if there are outstanding requests (from the same app or from other apps on the system) that match the cell network but not the Wi-Fi network, such as a request with NetworkCapabilities#NET_CAPABILITY_MMS
. When a network is no longer needed to serve any request, the system can tear it down at any time and usually does so immediately, so make sure to keep up requests for the networks your app needs.
By contrast, requests filed with android.net.ConnectivityManager#registerNetworkCallback will receive callbacks for all matching networks, and will not cause the system to keep up the networks they match. Use this to listen to networks that the device is connected to, but that you don't want the system to keep up for your use case.
Applications build a NetworkRequest and pass it to one of the ConnectivityManager
methods above together with a ConnectivityManager.NetworkCallback
object. The callback will then start receiving method calls about networks that match the request.
Networks are brought up and/or matched according to the capabilities set in the builder. For example, a request with NetworkCapabilities#NET_CAPABILITY_MMS
lets the system match and/or bring up a network that is capable to send MMS. A request with NetworkCapabilities#NET_CAPABILITY_NOT_METERED
matches a network that doesn't charge the user for usage. See NetworkCapabilities
for a list of capabilities and their description.
While all capabilities can be matched with the android.net.ConnectivityManager#registerNetworkCallback family of methods, not all capabilities can be used to request that the system brings up a network with android.net.ConnectivityManager#requestNetwork. For example, an application cannot use android.net.ConnectivityManager#requestNetwork to ask the system to bring up a network with NetworkCapabilities#NET_CAPABILITY_CAPTIVE_PORTAL
, because the system won't know if a network has a captive portal before it connects to that network. Similarly, some capabilities may require a specific permission or privilege to be requested. Look up the specific capability and the android.net.ConnectivityManager#requestNetwork method for limitations applicable to each capability.
Also, starting with Build.VERSION_CODES#UPSIDE_DOWN_CAKE
, some capabilities require the application to self-certify by explicitly adding the android.content.pm.PackageManager#PROPERTY_SELF_CERTIFIED_NETWORK_CAPABILITIES
property in the AndroidManifest.xml, which points to an XML resource file. In the XML resource file, the application declares what kind of network capabilities the application wants to have. Here is an example self-certification XML resource file :
<code><network-capabilities-declaration xmlns:android="http://schemas.android.com/apk/res/android"> <uses-network-capability android:name="NET_CAPABILITY_PRIORITIZE_LATENCY"/> <uses-network-capability android:name="NET_CAPABILITY_PRIORITIZE_BANDWIDTH"/> </network-capabilities-declaration> </code>Look up the specific capability to learn whether its usage requires this self-certification.
Summary
Nested classes | |
---|---|
open |
Builder used to create |
Inherited constants | |
---|---|
Public methods | |
---|---|
open Boolean |
Returns true if and only if the capabilities requested in this NetworkRequest are satisfied by the provided |
open Int | |
open Boolean |
Indicates whether some other object is "equal to" this one. |
open IntArray |
Gets all the capabilities set on this |
open NetworkSpecifier? | |
open MutableSet<Int!> |
Gets all the subscription ids set on this |
open IntArray |
Gets all the transports set on this |
open Boolean |
hasCapability(capability: Int) |
open Boolean |
hasTransport(transportType: Int) |
open Int |
hashCode() |
open String |
toString() |
open Unit |
writeToParcel(dest: Parcel, flags: Int) |
Properties | |
---|---|
static Parcelable.Creator<NetworkRequest!> |
Public methods
canBeSatisfiedBy
open fun canBeSatisfiedBy(nc: NetworkCapabilities?): Boolean
Returns true if and only if the capabilities requested in this NetworkRequest are satisfied by the provided NetworkCapabilities
.
Parameters | |
---|---|
nc |
NetworkCapabilities?: Capabilities that should satisfy this NetworkRequest. null capabilities do not satisfy any request. |
describeContents
open fun describeContents(): Int
Return | |
---|---|
Int |
a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either 0 or android.os.Parcelable#CONTENTS_FILE_DESCRIPTOR |
equals
open fun equals(other: Any?): Boolean
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 returntrue
. - It is symmetric: for any non-null reference values
x
andy
,x.equals(y)
should returntrue
if and only ify.equals(x)
returnstrue
. - It is transitive: for any non-null reference values
x
,y
, andz
, ifx.equals(y)
returnstrue
andy.equals(z)
returnstrue
, thenx.equals(z)
should returntrue
. - It is consistent: for any non-null reference values
x
andy
, multiple invocations ofx.equals(y)
consistently returntrue
or consistently returnfalse
, provided no information used inequals
comparisons on the objects is modified. - For any non-null reference value
x
,x.equals(null)
should returnfalse
.
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.
Parameters | |
---|---|
obj |
This value may be null . |
Return | |
---|---|
Boolean |
true if this object is the same as the obj argument; false otherwise. |
getCapabilities
open fun getCapabilities(): IntArray
Gets all the capabilities set on this NetworkRequest
instance.
getNetworkSpecifier
open fun getNetworkSpecifier(): NetworkSpecifier?
Return | |
---|---|
NetworkSpecifier? |
This value may be null . |
getSubscriptionIds
open fun getSubscriptionIds(): MutableSet<Int!>
Gets all the subscription ids set on this NetworkRequest
instance.
Return | |
---|---|
MutableSet<Int!> |
Set of Integer values for this instance. This value cannot be null . |
getTransportTypes
open fun getTransportTypes(): IntArray
Gets all the transports set on this NetworkRequest
instance.
Return | |
---|---|
IntArray |
an array of transport type values for this instance. This value cannot be null . Value is android.net.NetworkCapabilities#TRANSPORT_CELLULAR , android.net.NetworkCapabilities#TRANSPORT_WIFI , android.net.NetworkCapabilities#TRANSPORT_BLUETOOTH , android.net.NetworkCapabilities#TRANSPORT_ETHERNET , android.net.NetworkCapabilities#TRANSPORT_VPN , android.net.NetworkCapabilities#TRANSPORT_WIFI_AWARE , android.net.NetworkCapabilities#TRANSPORT_LOWPAN , android.net.NetworkCapabilities.TRANSPORT_TEST, android.net.NetworkCapabilities#TRANSPORT_USB , android.net.NetworkCapabilities#TRANSPORT_THREAD , or android.net.NetworkCapabilities#TRANSPORT_SATELLITE |
hasCapability
open fun hasCapability(capability: Int): Boolean
hasTransport
open fun hasTransport(transportType: Int): Boolean
hashCode
open fun hashCode(): Int
Return | |
---|---|
Int |
a hash code value for this object. |
toString
open fun toString(): String
Return | |
---|---|
String |
a string representation of the object. |
writeToParcel
open fun writeToParcel(
dest: Parcel,
flags: Int
): Unit
Parameters | |
---|---|
dest |
Parcel: The Parcel in which the object should be written. This value cannot be null . |
flags |
Int: Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE . Value is either 0 or a combination of android.os.Parcelable#PARCELABLE_WRITE_RETURN_VALUE , and android.os.Parcelable.PARCELABLE_ELIDE_DUPLICATES |