- Android — Network Connection
- Checking Network Connection
- Performing Network Operations
- Example
- Android Internet Connection Status & Network Change Receiver example
- Check Internet Connection
- Broadcast Receiver to handle changes in Network state
- Download Source Code
- ConnectivityManager
- Class Overview
- Summary
- Constants
- public static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED
- public static final String ACTION_CAPTIVE_PORTAL_SIGN_IN
- public static final String CONNECTIVITY_ACTION
- public static final int DEFAULT_NETWORK_PREFERENCE
- public static final String EXTRA_CAPTIVE_PORTAL
- public static final String EXTRA_EXTRA_INFO
- public static final String EXTRA_IS_FAILOVER
- public static final String EXTRA_NETWORK
- public static final String EXTRA_NETWORK_INFO
- public static final String EXTRA_NETWORK_REQUEST
- public static final String EXTRA_NETWORK_TYPE
- public static final String EXTRA_NO_CONNECTIVITY
- public static final String EXTRA_OTHER_NETWORK_INFO
- public static final String EXTRA_REASON
- public static final int TYPE_BLUETOOTH
- public static final int TYPE_DUMMY
- public static final int TYPE_ETHERNET
- public static final int TYPE_MOBILE
- public static final int TYPE_MOBILE_DUN
- public static final int TYPE_MOBILE_HIPRI
- public static final int TYPE_MOBILE_MMS
- public static final int TYPE_MOBILE_SUPL
- public static final int TYPE_VPN
- public static final int TYPE_WIFI
- public static final int TYPE_WIMAX
- Public Methods
- public void addDefaultNetworkActiveListener (ConnectivityManager.OnNetworkActiveListener l)
- public boolean bindProcessToNetwork (Network network)
- public Network getActiveNetwork ()
- public NetworkInfo getActiveNetworkInfo ()
- public NetworkInfo[] getAllNetworkInfo ()
- public Network[] getAllNetworks ()
- public boolean getBackgroundDataSetting ()
- public Network getBoundNetworkForProcess ()
- public ProxyInfo getDefaultProxy ()
- public LinkProperties getLinkProperties (Network network)
- public NetworkCapabilities getNetworkCapabilities (Network network)
- public NetworkInfo getNetworkInfo (int networkType)
- public NetworkInfo getNetworkInfo (Network network)
- public int getNetworkPreference ()
- public static Network getProcessDefaultNetwork ()
- public boolean isActiveNetworkMetered ()
- public boolean isDefaultNetworkActive ()
- public static boolean isNetworkTypeValid (int networkType)
- public void registerNetworkCallback (NetworkRequest request, PendingIntent operation)
- public void registerNetworkCallback (NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback)
- public void releaseNetworkRequest (PendingIntent operation)
- public void removeDefaultNetworkActiveListener (ConnectivityManager.OnNetworkActiveListener l)
- public void reportBadNetwork (Network network)
- public void reportNetworkConnectivity (Network network, boolean hasConnectivity)
- public boolean requestBandwidthUpdate (Network network)
- public void requestNetwork (NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback)
- public void requestNetwork (NetworkRequest request, PendingIntent operation)
Android — Network Connection
Android lets your application connect to the internet or any other local network and allows you to perform network operations.
A device can have various types of network connections. This chapter focuses on using either a Wi-Fi or a mobile network connection.
Checking Network Connection
Before you perform any network operations, you must first check that are you connected to that network or internet e.t.c. For this android provides ConnectivityManager class. You need to instantiate an object of this class by calling getSystemService() method. Its syntax is given below −
Once you instantiate the object of ConnectivityManager class, you can use getAllNetworkInfo method to get the information of all the networks. This method returns an array of NetworkInfo. So you have to receive it like this.
The last thing you need to do is to check Connected State of the network. Its syntax is given below −
Apart from this connected states, there are other states a network can achieve. They are listed below −
Sr.No | State |
---|---|
1 | Connecting |
2 | Disconnected |
3 | Disconnecting |
4 | Suspended |
5 | Unknown |
Performing Network Operations
After checking that you are connected to the internet, you can perform any network operation. Here we are fetching the html of a website from a url.
Android provides HttpURLConnection and URL class to handle these operations. You need to instantiate an object of URL class by providing the link of website. Its syntax is as follows −
After that you need to call openConnection method of url class and receive it in a HttpURLConnection object. After that you need to call the connect method of HttpURLConnection class.
And the last thing you need to do is to fetch the HTML from the website. For this you will use InputStream and BufferedReader class. Its syntax is given below −
Apart from this connect method, there are other methods available in HttpURLConnection class. They are listed below −
Sr.No | Method & description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
Steps | Description |
---|---|
1 | You will use Android studio IDE to create an Android application under a package com.tutorialspoint.myapplication. |
2 | Modify src/MainActivity.java file to add Activity code. |
4 | Modify layout XML file res/layout/activity_main.xml add any GUI component if required. |
6 | Modify AndroidManifest.xml to add necessary permissions. |
7 | Run the application and choose a running android device and install the application on it and verify the results. |
Here is the content of src/MainActivity.java.
Here is the content of activity_main.xml.
Here is the content of Strings.xml.
Here is the content of AndroidManifest.xml
Let’s try to run your application. I assume you have connected your actual Android Mobile device with your computer. To run the app from android studio, open one of your project’s activity files and click Run icon from the tool bar. Before starting your application, Android studio will display following window to select an option where you want to run your Android application.
Select your mobile device as an option and then check your mobile device which will display following screen −
Now just click on button, It will check internet connection as well as it will download image.
Out would be as follows and it has fetch the logo from internet.
Источник
Android Internet Connection Status & Network Change Receiver example
by Viral Patel · April 26, 2013
If you are developing an Android app you may already fetching information from internet. While doing so there is a chance that internet connection is not available on users handset. Hence its always a good idea to check the network state before performing any task that requires internet connection. You might also want to check what kind of internet connection is available in handset. For example is wifi currently enabled? or is mobile data network is connected.
Check Internet Connection
Here is a simple code snippet that will help you identify what kind of internet connection a user has on her device. First we need following permission in order to access network state. Add following permission to your AndroidManifest.xml file. Permissions required to access network state:
Now check following utility class NetworkUtil . It has method getConnectivityStatus which returns an int constant depending on current network connection. If wifi is enabled, this method will return TYPE_WIFI . Similarly for mobile data network is returns TYPE_MOBILE . You got the idea!! There is also method getConnectivityStatusString which returns current network state as a more readable string.NetworkUtil.java
You can use this utility class in your android app to check the network state of the device at any moment. Now this code will return you the current network state whenever the utility method is called. What if you want to do something in your android app when network state changes? Lets say when Wifi is disabled, you need to put your android app service to sleep so that it does not perform certain task. Now this is just one usecase. The idea is to create a hook which gets called whenever network state changes. And you can write your custom code in this hook to handle the change in network state.
Broadcast Receiver to handle changes in Network state
You can easily handle the changes in network state by creating your own Broadcast Receiver. Following is a broadcast receiver class where we handle the changes in network. Check onReceive() method. This method will be called when state of network changes. Here we are just creating a Toast message and displaying current network state. You can write your custom code in here to handle changes in connection state.NetworkChangeReceiver.java
Once we define our BroadcastReceiver, we need to define the same in AndroidMenifest.xml file. Add following to your menifest file.
We defined our broadcast receiver class in menifest file. Also we defined two intent CONNECTIVITY_CHANGE and WIFI_STATE_CHANGED . Thus this will register our receiver for given intents. Whenever there is change in network state, android will fire these intents and our broadcast receiver will be called. Below is complete AndroidMenifest.xml file. AndroidMenifest.xml
Run this demo in android emulator or actual device. When Wifi is enabled, you’ll see a Toast message with message.
Now disable Wifi. The toast message will show you message that internet connection is not available.
Now enable mobile data network. The same will be show in toast message as soon as you enable mobile data connection.
Download Source Code
Browse through the source code in following Git repository:
Источник
ConnectivityManager
Class Overview
Class that answers queries about the state of network connectivity. It also notifies applications when network connectivity changes. Get an instance of this class by calling Context.getSystemService(Context.CONNECTIVITY_SERVICE) .
The primary responsibilities of this class are to:
- Monitor network connections (Wi-Fi, GPRS, UMTS, etc.)
- Send broadcast intents when network connectivity changes
- Attempt to «fail over» to another network when connectivity to a network is lost
- Provide an API that allows applications to query the coarse-grained or fine-grained state of the available networks
- Provide an API that allows applications to request and select networks for their data traffic
Summary
Nested Classes | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ConnectivityManager.NetworkCallback | Base class for NetworkRequest callbacks. | |||||||||||||||||||||||||||||||||||||||
ConnectivityManager.OnNetworkActiveListener | Callback for use with addDefaultNetworkActiveListener(ConnectivityManager.OnNetworkActiveListener) to find out when the system default network has gone in to a high power state. |
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | ACTION_BACKGROUND_DATA_SETTING_CHANGED | This constant was deprecated in API level 16. As of ICE_CREAM_SANDWICH , availability of background data depends on several combined factors, and this broadcast is no longer sent. Instead, when background data is unavailable, getActiveNetworkInfo() will now appear disconnected. During first boot after a platform upgrade, this broadcast will be sent once if getBackgroundDataSetting() was false before the upgrade. | |||||||||
String | ACTION_CAPTIVE_PORTAL_SIGN_IN | The device has connected to a network that has presented a captive portal, which is blocking Internet connectivity. | |||||||||
String | CONNECTIVITY_ACTION | A change in network connectivity has occurred. | |||||||||
int | DEFAULT_NETWORK_PREFERENCE | This constant was deprecated in API level 18. Since we support so many more networks now, the single network default network preference can’t really express the hierarchy. Instead, the default is defined by the networkAttributes in config.xml. You can determine the current value by calling getNetworkPreference() from an App. | |||||||||
String | EXTRA_CAPTIVE_PORTAL | The lookup key for a CaptivePortal object included with the ACTION_CAPTIVE_PORTAL_SIGN_IN intent. | |||||||||
String | EXTRA_EXTRA_INFO | The lookup key for a string that provides optionally supplied extra information about the network state. | |||||||||
String | EXTRA_IS_FAILOVER | The lookup key for a boolean that indicates whether a connect event is for a network to which the connectivity manager was failing over following a disconnect on another network. | |||||||||
String | EXTRA_NETWORK | The lookup key for a Network object included with the intent after successfully finding a network for the applications request. | |||||||||
String | EXTRA_NETWORK_INFO | This constant was deprecated in API level 14. Since NetworkInfo can vary based on UID, applications should always obtain network information through getActiveNetworkInfo() . | |||||||||
String | EXTRA_NETWORK_REQUEST | The lookup key for a NetworkRequest object included with the intent after successfully finding a network for the applications request. | |||||||||
String | EXTRA_NETWORK_TYPE | Network type which triggered a CONNECTIVITY_ACTION broadcast. | |||||||||
String | EXTRA_NO_CONNECTIVITY | The lookup key for a boolean that indicates whether there is a complete lack of connectivity, i.e., no network is available. | |||||||||
String | EXTRA_OTHER_NETWORK_INFO | The lookup key for a NetworkInfo object. | |||||||||
String | EXTRA_REASON | The lookup key for a string that indicates why an attempt to connect to a network failed. | |||||||||
int | TYPE_BLUETOOTH | The Bluetooth data connection. | |||||||||
int | TYPE_DUMMY | Dummy data connection. | |||||||||
int | TYPE_ETHERNET | The Ethernet data connection. | |||||||||
int | TYPE_MOBILE | The Mobile data connection. | |||||||||
int | TYPE_MOBILE_DUN | A DUN-specific Mobile data connection. | |||||||||
int | TYPE_MOBILE_HIPRI | This constant was deprecated in API level 23. Applications should instead use requestNetwork(NetworkRequest, NetworkCallback) to request a network that uses the TRANSPORT_CELLULAR transport. | |||||||||
int | TYPE_MOBILE_MMS | This constant was deprecated in API level 23. Applications should instead use requestNetwork(NetworkRequest, NetworkCallback) to request a network that provides the NET_CAPABILITY_MMS capability. | |||||||||
int | TYPE_MOBILE_SUPL | This constant was deprecated in API level 23. Applications should instead use requestNetwork(NetworkRequest, NetworkCallback) to request a network that provides the NET_CAPABILITY_SUPL capability. | |||||||||
int | TYPE_VPN | A virtual network using one or more native bearers. | |||||||||
int | TYPE_WIFI | The WIFI data connection. | |||||||||
int | TYPE_WIMAX | The WiMAX data connection. |
Public Methods | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
This method has the same behavior as unregisterNetworkCallback(PendingIntent) with respect to releasing network resources and disconnecting. Constantspublic static final String ACTION_BACKGROUND_DATA_SETTING_CHANGED This constant was deprecated in API level 16. Broadcast Action: The setting for background data usage has changed values. Use getBackgroundDataSetting() to get the current value. If an application uses the network in the background, it should listen for this broadcast and stop using the background data if the value is false . public static final String ACTION_CAPTIVE_PORTAL_SIGN_INThe device has connected to a network that has presented a captive portal, which is blocking Internet connectivity. The user was presented with a notification that network sign in is required, and the user invoked the notification’s action indicating they desire to sign in to the network. Apps handling this activity should facilitate signing in to the network. This action includes a Network typed extra called EXTRA_NETWORK that represents the network presenting the captive portal; all communication with the captive portal must be done using this Network object. This activity includes a CaptivePortal extra named EXTRA_CAPTIVE_PORTAL that can be used to indicate different outcomes of the captive portal sign in to the system:
public static final String CONNECTIVITY_ACTIONA change in network connectivity has occurred. A default connection has either been established or lost. The NetworkInfo for the affected network is sent as an extra; it should be consulted to see what kind of connectivity event occurred. If this is a connection that was the result of failing over from a disconnected network, then the FAILOVER_CONNECTION boolean extra is set to true. For a loss of connectivity, if the connectivity manager is attempting to connect (or has already connected) to another network, the NetworkInfo for the new network is also passed as an extra. This lets any receivers of the broadcast know that they should not necessarily tell the user that no data traffic will be possible. Instead, the receiver should expect another broadcast soon, indicating either that the failover attempt succeeded (and so there is still overall data connectivity), or that the failover attempt failed, meaning that all connectivity has been lost. For a disconnect event, the boolean extra EXTRA_NO_CONNECTIVITY is set to true if there are no connected networks at all. public static final int DEFAULT_NETWORK_PREFERENCE This constant was deprecated in API level 18. If you want to set the default network preference,you can directly change the networkAttributes array in framework’s config.xml. public static final String EXTRA_CAPTIVE_PORTALThe lookup key for a CaptivePortal object included with the ACTION_CAPTIVE_PORTAL_SIGN_IN intent. The CaptivePortal object can be used to either indicate to the system that the captive portal has been dismissed or that the user does not want to pursue signing in to captive portal. Retrieve it with getParcelableExtra(String) . public static final String EXTRA_EXTRA_INFOThe lookup key for a string that provides optionally supplied extra information about the network state. The information may be passed up from the lower networking layers, and its meaning may be specific to a particular network type. Retrieve it with getStringExtra(String) . public static final String EXTRA_IS_FAILOVERThe lookup key for a boolean that indicates whether a connect event is for a network to which the connectivity manager was failing over following a disconnect on another network. Retrieve it with getBooleanExtra(String, boolean) . public static final String EXTRA_NETWORKThe lookup key for a Network object included with the intent after successfully finding a network for the applications request. Retrieve it with getParcelableExtra(String) . Note that if you intend to invoke openConnection(java.net.URL) then you must get a ConnectivityManager instance before doing so. public static final String EXTRA_NETWORK_INFO This constant was deprecated in API level 14. The lookup key for a NetworkInfo object. Retrieve with getParcelableExtra(String) . See Alsopublic static final String EXTRA_NETWORK_REQUESTThe lookup key for a NetworkRequest object included with the intent after successfully finding a network for the applications request. Retrieve it with getParcelableExtra(String) . public static final String EXTRA_NETWORK_TYPENetwork type which triggered a CONNECTIVITY_ACTION broadcast. See Alsopublic static final String EXTRA_NO_CONNECTIVITYThe lookup key for a boolean that indicates whether there is a complete lack of connectivity, i.e., no network is available. Retrieve it with getBooleanExtra(String, boolean) . public static final String EXTRA_OTHER_NETWORK_INFOThe lookup key for a NetworkInfo object. This is supplied when there is another network that it may be possible to connect to. Retrieve with getParcelableExtra(String) . public static final String EXTRA_REASONThe lookup key for a string that indicates why an attempt to connect to a network failed. The string has no particular structure. It is intended to be used in notifications presented to users. Retrieve it with getStringExtra(String) . public static final int TYPE_BLUETOOTHThe Bluetooth data connection. When active, all data traffic will use this network type’s interface by default (it has a default route). public static final int TYPE_DUMMYDummy data connection. This should not be used on shipping devices. public static final int TYPE_ETHERNETThe Ethernet data connection. When active, all data traffic will use this network type’s interface by default (it has a default route). public static final int TYPE_MOBILEThe Mobile data connection. When active, all data traffic will use this network type’s interface by default (it has a default route) public static final int TYPE_MOBILE_DUNA DUN-specific Mobile data connection. This network type may use the same network interface as TYPE_MOBILE or it may use a different one. This is sometimes by the system when setting up an upstream connection for tethering so that the carrier is aware of DUN traffic. public static final int TYPE_MOBILE_HIPRI This constant was deprecated in API level 23. A High Priority Mobile data connection. This network type uses the same network interface as TYPE_MOBILE but the routing setup is different. public static final int TYPE_MOBILE_MMS This constant was deprecated in API level 23. An MMS-specific Mobile data connection. This network type may use the same network interface as TYPE_MOBILE or it may use a different one. This is used by applications needing to talk to the carrier’s Multimedia Messaging Service servers. public static final int TYPE_MOBILE_SUPL This constant was deprecated in API level 23. A SUPL-specific Mobile data connection. This network type may use the same network interface as TYPE_MOBILE or it may use a different one. This is used by applications needing to talk to the carrier’s Secure User Plane Location servers for help locating the device. public static final int TYPE_VPNA virtual network using one or more native bearers. It may or may not be providing security services. public static final int TYPE_WIFIThe WIFI data connection. When active, all data traffic will use this network type’s interface by default (it has a default route). public static final int TYPE_WIMAXThe WiMAX data connection. When active, all data traffic will use this network type’s interface by default (it has a default route). Public Methodspublic void addDefaultNetworkActiveListener (ConnectivityManager.OnNetworkActiveListener l)Start listening to reports when the system’s default data network is active, meaning it is a good time to perform network traffic. Use isDefaultNetworkActive() to determine the current state of the system’s default network after registering the listener. If the process default network has been set with bindProcessToNetwork(Network) this function will not reflect the process’s default, but the system default. Parameters
public boolean bindProcessToNetwork (Network network)Binds the current process to network . All Sockets created in the future (and not explicitly bound via a bound SocketFactory from Network.getSocketFactory() ) will be bound to network . All host name resolutions will be limited to network as well. Note that if network ever disconnects, all Sockets created in this way will cease to work and all host name resolutions will fail. This is by design so an application doesn’t accidentally use Sockets it thinks are still bound to a particular Network . To clear binding pass null for network . Using individually bound Sockets created by Network.getSocketFactory().createSocket() and performing network-specific host name resolutions via Network.getAllByName is preferred to calling bindProcessToNetwork . Parameters
Returns
public Network getActiveNetwork ()Returns a Network object corresponding to the currently active default data network. In the event that the current active default data network disconnects, the returned Network object will no longer be usable. This will return null when there is no default network. This method requires the caller to hold the permission ACCESS_NETWORK_STATE . Returns
public NetworkInfo getActiveNetworkInfo ()Returns details about the currently active default data network. When connected, this network is the default route for outgoing connections. You should always check isConnected() before initiating network traffic. This may return null when there is no default network. This method requires the caller to hold the permission ACCESS_NETWORK_STATE . Returns
public NetworkInfo[] getAllNetworkInfo () This method was deprecated in API level 23. Returns connection status information about all network types supported by the device. This method requires the caller to hold the permission ACCESS_NETWORK_STATE . Returns
public Network[] getAllNetworks ()Returns an array of all Network currently tracked by the framework. This method requires the caller to hold the permission ACCESS_NETWORK_STATE . Returnspublic boolean getBackgroundDataSetting () This method was deprecated in API level 14. Returns the value of the setting for background data usage. If false, applications should not use the network if the application is not in the foreground. Developers should respect this setting, and check the value of this before performing any background data operations. All applications that have background services that use the network should listen to ACTION_BACKGROUND_DATA_SETTING_CHANGED . Returns
public Network getBoundNetworkForProcess ()Returns the Network currently bound to this process via bindProcessToNetwork(Network) , or null if no Network is explicitly bound. Returns
public ProxyInfo getDefaultProxy ()Get the current default HTTP proxy settings. If a global proxy is set it will be returned, otherwise if this process is bound to a Network using bindProcessToNetwork(Network) then that Network ‘s proxy is returned, otherwise the default network’s proxy is returned. Returns
public LinkProperties getLinkProperties (Network network)Get the LinkProperties for the given Network . This will return null if the network is unknown. This method requires the caller to hold the permission ACCESS_NETWORK_STATE . Parameters
Returnspublic NetworkCapabilities getNetworkCapabilities (Network network)Get the NetworkCapabilities for the given Network . This will return null if the network is unknown. This method requires the caller to hold the permission ACCESS_NETWORK_STATE . Parameters
Returnspublic NetworkInfo getNetworkInfo (int networkType) This method was deprecated in API level 23. Returns connection status information about a particular network type. This method requires the caller to hold the permission ACCESS_NETWORK_STATE . Parameters
Returns
public NetworkInfo getNetworkInfo (Network network)Returns connection status information about a particular Network. This method requires the caller to hold the permission ACCESS_NETWORK_STATE . Parameters
Returns
public int getNetworkPreference () This method was deprecated in API level 21. Retrieves the current preferred network type. This method requires the caller to hold the permission ACCESS_NETWORK_STATE . Returns
public static Network getProcessDefaultNetwork () This method was deprecated in API level 23. Returns the Network currently bound to this process via bindProcessToNetwork(Network) , or null if no Network is explicitly bound. Returns
public boolean isActiveNetworkMetered ()Returns if the currently active data network is metered. A network is classified as metered when the user is sensitive to heavy data usage on that connection due to monetary costs, data limitations or battery/performance issues. You should check this before doing large data transfers, and warn the user or delay the operation until another network is available. This method requires the caller to hold the permission ACCESS_NETWORK_STATE . Returns
public boolean isDefaultNetworkActive ()Return whether the data network is currently active. An active network means that it is currently in a high power state for performing data transmission. On some types of networks, it may be expensive to move and stay in such a state, so it is more power efficient to batch network traffic together when the radio is already in this state. This method tells you whether right now is currently a good time to initiate network traffic, as the network is already active. public static boolean isNetworkTypeValid (int networkType) This method was deprecated in API level 23. Tests if a given integer represents a valid network type. Parameters
Returns
public void registerNetworkCallback (NetworkRequest request, PendingIntent operation)Registers a PendingIntent to be sent when a network is available which satisfies the given NetworkRequest . This function behaves identically to the version that takes a NetworkCallback, but instead of ConnectivityManager.NetworkCallback a PendingIntent is used. This means the request may outlive the calling application and get called back when a suitable network is found. The operation is an Intent broadcast that goes to a broadcast receiver that you registered with registerReceiver(BroadcastReceiver, IntentFilter) or through the tag in an AndroidManifest.xml file The operation Intent is delivered with two extras, a Network typed extra called EXTRA_NETWORK and a NetworkRequest typed extra called EXTRA_NETWORK_REQUEST containing the original requests parameters. If there is already a request for this Intent registered (with the equality of two Intents defined by filterEquals(Intent) ), then it will be removed and replaced by this one, effectively releasing the previous NetworkRequest . This method requires the caller to hold the permission ACCESS_NETWORK_STATE . Parameters
public void registerNetworkCallback (NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback)Registers to receive notifications about all networks which satisfy the given NetworkRequest . The callbacks will continue to be called until either the application exits or unregisterNetworkCallback(PendingIntent) is called This method requires the caller to hold the permission ACCESS_NETWORK_STATE . Parameters
public void releaseNetworkRequest (PendingIntent operation)This method has the same behavior as unregisterNetworkCallback(PendingIntent) with respect to releasing network resources and disconnecting. Parameters
public void removeDefaultNetworkActiveListener (ConnectivityManager.OnNetworkActiveListener l)Parameters
public void reportBadNetwork (Network network) This method was deprecated in API level 23. Report a problem network to the framework. This provides a hint to the system that there might be connectivity problems on this network and may cause the framework to re-evaluate network connectivity and/or switch to another network. Parameters
public void reportNetworkConnectivity (Network network, boolean hasConnectivity)Report to the framework whether a network has working connectivity. This provides a hint to the system that a particular network is providing working connectivity or not. In response the framework may re-evaluate the network’s connectivity and might take further action thereafter. Parameters
public boolean requestBandwidthUpdate (Network network)Requests bandwidth update for a given Network and returns whether the update request is accepted by ConnectivityService. Once accepted, ConnectivityService will poll underlying network connection for updated bandwidth information. The caller will be notified via ConnectivityManager.NetworkCallback if there is an update. Notice that this method assumes that the caller has previously called registerNetworkCallback(NetworkRequest, PendingIntent) to listen for network changes. Parameters
Returns
public void requestNetwork (NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback)Request a network to satisfy a set of NetworkCapabilities . This NetworkRequest will live until released via unregisterNetworkCallback(PendingIntent) or the calling application exits. Status of the request can be followed by listening to the various callbacks described in ConnectivityManager.NetworkCallback . The Network can be used to direct traffic to the network. It is presently unsupported to request a network with mutable NetworkCapabilities such as NET_CAPABILITY_VALIDATED or NET_CAPABILITY_CAPTIVE_PORTAL as these NetworkCapabilities represent states that a particular network may never attain, and whether a network will attain these states is unknown prior to bringing up the network so the framework does not know how to go about satisfing a request with these capabilities. This method requires the caller to hold the permission CHANGE_NETWORK_STATE . Parameters
Throws
public void requestNetwork (NetworkRequest request, PendingIntent operation)Request a network to satisfy a set of NetworkCapabilities . This function behaves identically to the version that takes a NetworkCallback, but instead of ConnectivityManager.NetworkCallback a PendingIntent is used. This means the request may outlive the calling application and get called back when a suitable network is found. The operation is an Intent broadcast that goes to a broadcast receiver that you registered with registerReceiver(BroadcastReceiver, IntentFilter) or through the tag in an AndroidManifest.xml file The operation Intent is delivered with two extras, a Network typed extra called EXTRA_NETWORK and a NetworkRequest typed extra called EXTRA_NETWORK_REQUEST containing the original requests parameters. It is important to create a new, ConnectivityManager.NetworkCallback based request before completing the processing of the Intent to reserve the network or it will be released shortly after the Intent is processed. If there is already a request for this Intent registered (with the equality of two Intents defined by filterEquals(Intent) ), then it will be removed and replaced by this one, effectively releasing the previous NetworkRequest . It is presently unsupported to request a network with either NET_CAPABILITY_VALIDATED or NET_CAPABILITY_CAPTIVE_PORTAL as these NetworkCapabilities represent states that a particular network may never attain, and whether a network will attain these states is unknown prior to bringing up the network so the framework does not know how to go about satisfing a request with these capabilities. This method requires the caller to hold the permission CHANGE_NETWORK_STATE . Источник |