Save the date! Android Dev Summit is coming to Mountain View, CA on November 7-8, 2018.

NetworkInfo

public class NetworkInfo
extends Object implements Parcelable

java.lang.Object
   ↳ android.net.NetworkInfo


Describes the status of a network interface.

Use ConnectivityManager.getActiveNetworkInfo() to get an instance that represents the current network connection.

Summary

Nested classes

enum NetworkInfo.DetailedState

The fine-grained state of a network connection. 

enum NetworkInfo.State

Coarse-grained network state. 

Inherited constants

Fields

public static final Creator<NetworkInfo> CREATOR

Public methods

int describeContents()

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

NetworkInfo.DetailedState getDetailedState()

Reports the current fine-grained state of the network.

String getExtraInfo()

Report the extra information about the network state, if any was provided by the lower networking layers.

String getReason()

This method was deprecated in API level 28. This method does not have a consistent contract that could make it useful to callers.

NetworkInfo.State getState()

This method was deprecated in API level 28. Apps should instead use the ConnectivityManager.NetworkCallback API to learn about connectivity changes. ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback) and ConnectivityManager.registerNetworkCallback(NetworkRequest, PendingIntent). These will give a more accurate picture of the connectivity state of the device and let apps react more easily and quickly to changes.

int getSubtype()

Return a network-type-specific integer describing the subtype of the network.

String getSubtypeName()

Return a human-readable name describing the subtype of the network.

int getType()

This method was deprecated in API level 28. Callers should switch to checking NetworkCapabilities.hasTransport(int) instead with one of the NetworkCapabilities#TRANSPORT_* constants : getType() and getTypeName() cannot account for networks using multiple transports. Note that generally apps should not care about transport; NetworkCapabilities.NET_CAPABILITY_NOT_METERED and NetworkCapabilities.getLinkDownstreamBandwidthKbps() are calls that apps concerned with meteredness or bandwidth should be looking at, as they offer this information with much better accuracy.

String getTypeName()

This method was deprecated in API level 28. Callers should switch to checking NetworkCapabilities.hasTransport(int) instead with one of the NetworkCapabilities#TRANSPORT_* constants : getType() and getTypeName() cannot account for networks using multiple transports. Note that generally apps should not care about transport; NetworkCapabilities.NET_CAPABILITY_NOT_METERED and NetworkCapabilities.getLinkDownstreamBandwidthKbps() are calls that apps concerned with meteredness or bandwidth should be looking at, as they offer this information with much better accuracy.

boolean isAvailable()

This method was deprecated in API level 28. Apps should instead use the ConnectivityManager.NetworkCallback API to learn about connectivity changes. ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback) and ConnectivityManager.registerNetworkCallback(NetworkRequest, PendingIntent). These will give a more accurate picture of the connectivity state of the device and let apps react more easily and quickly to changes.

boolean isConnected()

Indicates whether network connectivity exists and it is possible to establish connections and pass data.

boolean isConnectedOrConnecting()

This method was deprecated in API level 28. Apps should instead use the ConnectivityManager.NetworkCallback API to learn about connectivity changes. ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback) and ConnectivityManager.registerNetworkCallback(NetworkRequest, PendingIntent). These will give a more accurate picture of the connectivity state of the device and let apps react more easily and quickly to changes.

boolean isFailover()

This method was deprecated in API level 28. This field is not populated in recent Android releases, and does not make a lot of sense in a multi-network world.

boolean isRoaming()

This method was deprecated in API level 28. Callers should switch to checking NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING instead, since that handles more complex situations, such as VPNs.

String toString()

Returns a string representation of the object.

void writeToParcel(Parcel dest, int flags)

Flatten this object in to a Parcel.

Inherited methods

Fields

CREATOR

added in API level 24
public static final Creator<NetworkInfo> CREATOR

Public methods

describeContents

added in API level 1
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 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.

getDetailedState

added in API level 1
public NetworkInfo.DetailedState getDetailedState ()

Reports the current fine-grained state of the network.

Returns
NetworkInfo.DetailedState the fine-grained state

getExtraInfo

added in API level 1
public String getExtraInfo ()

Report the extra information about the network state, if any was provided by the lower networking layers.

Returns
String the extra information, or null if not available

getReason

added in API level 1
public String getReason ()

This method was deprecated in API level 28.
This method does not have a consistent contract that could make it useful to callers.

Report the reason an attempt to establish connectivity failed, if one is available.

Returns
String the reason for failure, or null if not available

getState

added in API level 1
public NetworkInfo.State getState ()

This method was deprecated in API level 28.
Apps should instead use the ConnectivityManager.NetworkCallback API to learn about connectivity changes. ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback) and ConnectivityManager.registerNetworkCallback(NetworkRequest, PendingIntent). These will give a more accurate picture of the connectivity state of the device and let apps react more easily and quickly to changes.

Reports the current coarse-grained state of the network.

Returns
NetworkInfo.State the coarse-grained state

getSubtype

added in API level 3
public int getSubtype ()

Return a network-type-specific integer describing the subtype of the network.

Returns
int the network subtype

getSubtypeName

added in API level 3
public String getSubtypeName ()

Return a human-readable name describing the subtype of the network.

Returns
String the name of the network subtype

getType

added in API level 1
public int getType ()

This method was deprecated in API level 28.
Callers should switch to checking NetworkCapabilities.hasTransport(int) instead with one of the NetworkCapabilities#TRANSPORT_* constants : getType() and getTypeName() cannot account for networks using multiple transports. Note that generally apps should not care about transport; NetworkCapabilities.NET_CAPABILITY_NOT_METERED and NetworkCapabilities.getLinkDownstreamBandwidthKbps() are calls that apps concerned with meteredness or bandwidth should be looking at, as they offer this information with much better accuracy.

Reports the type of network to which the info in this NetworkInfo pertains.

Returns
int one of ConnectivityManager.TYPE_MOBILE, ConnectivityManager.TYPE_WIFI, ConnectivityManager.TYPE_WIMAX, ConnectivityManager.TYPE_ETHERNET, ConnectivityManager.TYPE_BLUETOOTH, or other types defined by ConnectivityManager.

getTypeName

added in API level 1
public String getTypeName ()

This method was deprecated in API level 28.
Callers should switch to checking NetworkCapabilities.hasTransport(int) instead with one of the NetworkCapabilities#TRANSPORT_* constants : getType() and getTypeName() cannot account for networks using multiple transports. Note that generally apps should not care about transport; NetworkCapabilities.NET_CAPABILITY_NOT_METERED and NetworkCapabilities.getLinkDownstreamBandwidthKbps() are calls that apps concerned with meteredness or bandwidth should be looking at, as they offer this information with much better accuracy.

Return a human-readable name describe the type of the network, for example "WIFI" or "MOBILE".

Returns
String the name of the network type

isAvailable

added in API level 1
public boolean isAvailable ()

This method was deprecated in API level 28.
Apps should instead use the ConnectivityManager.NetworkCallback API to learn about connectivity changes. ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback) and ConnectivityManager.registerNetworkCallback(NetworkRequest, PendingIntent). These will give a more accurate picture of the connectivity state of the device and let apps react more easily and quickly to changes.

Indicates whether network connectivity is possible. A network is unavailable when a persistent or semi-persistent condition prevents the possibility of connecting to that network. Examples include

  • The device is out of the coverage area for any network of this type.
  • The device is on a network other than the home network (i.e., roaming), and data roaming has been disabled.
  • The device's radio is turned off, e.g., because airplane mode is enabled.
Since Android L, this always returns true, because the system only returns info for available networks.

Returns
boolean true if the network is available, false otherwise

isConnected

added in API level 1
public boolean isConnected ()

Indicates whether network connectivity exists and it is possible to establish connections and pass data.

Always call this before attempting to perform data transactions.

Returns
boolean true if network connectivity exists, false otherwise.

isConnectedOrConnecting

added in API level 1
public boolean isConnectedOrConnecting ()

This method was deprecated in API level 28.
Apps should instead use the ConnectivityManager.NetworkCallback API to learn about connectivity changes. ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.NetworkCallback) and ConnectivityManager.registerNetworkCallback(NetworkRequest, PendingIntent). These will give a more accurate picture of the connectivity state of the device and let apps react more easily and quickly to changes.

Indicates whether network connectivity exists or is in the process of being established. This is good for applications that need to do anything related to the network other than read or write data. For the latter, call isConnected() instead, which guarantees that the network is fully usable.

Returns
boolean true if network connectivity exists or is in the process of being established, false otherwise.

isFailover

added in API level 1
public boolean isFailover ()

This method was deprecated in API level 28.
This field is not populated in recent Android releases, and does not make a lot of sense in a multi-network world.

Indicates whether the current attempt to connect to the network resulted from the ConnectivityManager trying to fail over to this network following a disconnect from another network.

Returns
boolean true if this is a failover attempt, false otherwise.

isRoaming

added in API level 3
public boolean isRoaming ()

This method was deprecated in API level 28.
Callers should switch to checking NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING instead, since that handles more complex situations, such as VPNs.

Indicates whether the device is currently roaming on this network. When true, it suggests that use of data on this network may incur extra costs.

Returns
boolean true if roaming is in effect, false otherwise.

toString

added in API level 1
public 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 1
public 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.PARCELABLE_WRITE_RETURN_VALUE.