public class ConnectivityManager
extends Object
java.lang.Object | |
↳ | android.net.ConnectivityManager |
回答关于网络连接状态的查询的类。 它还会在网络连接发生变化时通知应用程序。 通过调用Context.getSystemService(Context.CONNECTIVITY_SERVICE)
获取此类的实例。
这个班的主要职责是:
Nested classes |
|
---|---|
class |
ConnectivityManager.NetworkCallback NetworkRequest回调的基类。 |
interface |
ConnectivityManager.OnNetworkActiveListener 回拨用于 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
String ACTION_BACKGROUND_DATA_SETTING_CHANGED
此常数在API级别16中已弃用。
从ICE_CREAM_SANDWICH
,背景数据的可用性取决于几个组合因素,并且不再发送该广播。 相反,当背景数据不可用时, getActiveNetworkInfo()
现在将显示为已断开连接。 在平台升级后首次启动期间,如果升级前getBackgroundDataSetting()
为false
,则此广播将发送一次。
广播动作:背景数据使用设置已更改值。 使用getBackgroundDataSetting()
获取当前值。
如果一个应用程序在后台使用网络,它应该监听这个广播,如果值为 false
,则停止使用后台数据。
常量值:“android.net.conn.BACKGROUND_DATA_SETTING_CHANGED”
String ACTION_CAPTIVE_PORTAL_SIGN_IN
该设备已连接到已提供强制门户的网络,该门户阻止Internet连接。 向用户呈现了需要网络登录的通知,并且用户调用了通知的操作,表明他们希望登录到网络。 处理此活动的应用程序应便于登录到网络。 此操作包括一个Network
键入的额外名为EXTRA_NETWORK
,表示呈现强制门户的网络; 所有与强制门户的通信都必须使用这个Network
对象完成。
CaptivePortal
extra named
EXTRA_CAPTIVE_PORTAL
that can be used to indicate different outcomes of the captive portal sign in to the system:
reportCaptivePortalDismissed()
so the system can reevaluate the network. If reevaluation finds the network no longer subject to a captive portal, the network may become the default active data network. ignoreNetwork()
. 常量值:“android.net.conn.CAPTIVE_PORTAL”
String ACTION_RESTRICT_BACKGROUND_CHANGED
后台测量的网络活动限制已发生变化。
应用程序应该调用 getRestrictBackgroundStatus()
来检查限制是否适用于它们。
这只会发送给注册的接收者,而不是接收者。
常量值:“android.net.conn.RESTRICT_BACKGROUND_CHANGED”
String CONNECTIVITY_ACTION
网络连接发生了变化。 默认连接已建立或丢失。 受影响网络的NetworkInfo作为额外发送; 应该咨询看看发生了什么样的连接事件。
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 totrue
if there are no connected networks at all.
常量值:“android.net.conn.CONNECTIVITY_CHANGE”
int DEFAULT_NETWORK_PREFERENCE
此常数在API级别18中已弃用。
由于我们现在支持更多网络,因此单一网络默认网络首选项无法真正表达层次结构。 相反,缺省值由config.xml中的networkAttributes定义。 您可以通过从应用程序调用getNetworkPreference()
来确定当前值。
如果要设置默认的网络首选项,可以直接在framework的config.xml中更改networkAttributes数组。
常数值:1(0x00000001)
String EXTRA_CAPTIVE_PORTAL
包含在ACTION_CAPTIVE_PORTAL_SIGN_IN
意图中的CaptivePortal
对象的查找键。 CaptivePortal
对象可用于向系统表明强制门户已被解雇或用户不想继续登录强制门户。 用getParcelableExtra(String)
检索它。
常量值:“android.net.extra.CAPTIVE_PORTAL”
String EXTRA_CAPTIVE_PORTAL_URL
将网址传递到强制性门户登录活动的关键。
常量值:“android.net.extra.CAPTIVE_PORTAL_URL”
String EXTRA_EXTRA_INFO
字符串的查找键,可提供有关网络状态的可选附加信息。 信息可以从较低的网络层传递,其含义可以特定于特定的网络类型。 用getStringExtra(String)
检索它。
常量值:“extraInfo”
String EXTRA_IS_FAILOVER
布尔型的查找键,指示连接事件是否针对连接管理器在另一个网络上断开连接后正在故障切换的网络。 用getBooleanExtra(String, boolean)
检索它。
常量值:“isFailover”
String EXTRA_NETWORK
在为应用程序请求成功找到网络后,包含在意图中的Network
对象的查找键。 用getParcelableExtra(String)
检索它。
请注意,如果您打算调用 openConnection(java.net.URL)
则必须先获取ConnectivityManager实例。
常量值:“android.net.extra.NETWORK”
String EXTRA_NETWORK_INFO
此常数在API级别14中已弃用。
由于NetworkInfo
可能因UID而异,因此应用程序应始终通过getActiveNetworkInfo()
获取网络信息。
NetworkInfo
对象的查找键。 用getParcelableExtra(String)
检索。
也可以看看:
常量值:“networkInfo”
String EXTRA_NETWORK_REQUEST
成功查找应用程序请求的网络后,包含在意图中的NetworkRequest
对象的查找键。 用getParcelableExtra(String)
检索它。
常量值:“android.net.extra.NETWORK_REQUEST”
String EXTRA_NETWORK_TYPE
触发 CONNECTIVITY_ACTION
广播的网络类型。
也可以看看:
常量值:“networkType”
String EXTRA_NO_CONNECTIVITY
布尔型的查找键,指示是否完全缺少连接,即没有网络可用。 用getBooleanExtra(String, boolean)
检索它。
常量值:“noConnectivity”
String EXTRA_OTHER_NETWORK_INFO
NetworkInfo
对象的查找键。 当有可能连接到另一个网络时提供此信息。 用getParcelableExtra(String)
检索。
常数值:“otherNetwork”
String EXTRA_REASON
字符串的查找键,指示尝试连接到网络的原因失败。 该字符串没有特定的结构。 它旨在用于向用户显示的通知。 用getStringExtra(String)
检索它。
常数值:“原因”
int RESTRICT_BACKGROUND_STATUS_DISABLED
当应用程序在后台运行时,设备不限制测量的网络活动。
常数值:1(0x00000001)
int RESTRICT_BACKGROUND_STATUS_ENABLED
当应用程序在后台运行时,设备限制测量的网络活动。
在这种状态下,应用程序不应该尝试在后台运行时使用网络,因为它会被拒绝。
常量值:3(0x00000003)
int RESTRICT_BACKGROUND_STATUS_WHITELISTED
当应用程序在后台运行时,设备限制测量的网络活动,但允许应用程序绕过它。
在这种状态下,应用程序应采取措施减轻计量的网络访问。 例如,音乐流媒体应用程序应该切换到低带宽比特率。
常量值:2(0x00000002)
int TYPE_BLUETOOTH
蓝牙数据连接。 当处于活动状态时,默认情况下所有数据流量都将使用此网络类型的接口(它具有默认路由)。
常量值:7(0x00000007)
int TYPE_ETHERNET
以太网数据连接。 当处于活动状态时,默认情况下所有数据流量都将使用此网络类型的接口(它具有默认路由)。
常量值:9(0x00000009)
int TYPE_MOBILE
移动数据连接。 处于活动状态时,所有数据流量默认都会使用此网络类型的接口(它具有默认路由)
常量值:0(0x00000000)
int TYPE_MOBILE_DUN
一个DUN特定的移动数据连接。 该网络类型可以使用与TYPE_MOBILE
相同的网络接口,也可以使用其他网络接口。 系统有时会在为绑定建立上行连接时使系统知道DUN流量。
常量值:4(0x00000004)
int TYPE_MOBILE_HIPRI
此常数在API级别23中已弃用。
应用程序应改为使用requestNetwork(NetworkRequest, NetworkCallback)
来请求使用TRANSPORT_CELLULAR
传输的网络。
高优先级移动数据连接。 此网络类型使用与TYPE_MOBILE
相同的网络接口,但路由设置不同。
常量值:5(0x00000005)
int TYPE_MOBILE_MMS
此常数在API级别23中已弃用。
应用程序应改为使用requestNetwork(NetworkRequest, NetworkCallback)
来请求提供NET_CAPABILITY_MMS
功能的网络。
特定于MMS的移动数据连接。 此网络类型可能使用与TYPE_MOBILE
相同的网络接口,也可能使用其他网络接口。 这是由需要与运营商的多媒体消息服务服务器交谈的应用程序使用的。
常量值:2(0x00000002)
int TYPE_MOBILE_SUPL
此常数在API级别23中已弃用。
应用程序应改为使用requestNetwork(NetworkRequest, NetworkCallback)
来请求提供NET_CAPABILITY_SUPL
功能的网络。
SUPL特定的移动数据连接。 此网络类型可能使用与TYPE_MOBILE
相同的网络接口,也可能使用其他网络接口。 应用程序需要与运营商的安全用户平面位置服务器交谈才能找到该设备。
常量值:3(0x00000003)
int TYPE_WIFI
WIFI数据连接。 当处于活动状态时,默认情况下所有数据流量都将使用此网络类型的接口(它具有默认路由)。
常数值:1(0x00000001)
int TYPE_WIMAX
WiMAX数据连接。 当处于活动状态时,默认情况下所有数据流量都将使用此网络类型的接口(它具有默认路由)。
常数值:6(0x00000006)
void addDefaultNetworkActiveListener (ConnectivityManager.OnNetworkActiveListener l)
当系统的默认数据网络处于活动状态时,开始收听报告,这意味着现在是执行网络流量的好时机。 使用isDefaultNetworkActive()
确定注册侦听器后系统默认网络的当前状态。
如果过程默认网络设置为 bindProcessToNetwork(Network)
此功能不会反映过程的默认值,而是系统默认值。
Parameters | |
---|---|
l |
ConnectivityManager.OnNetworkActiveListener : The listener to be told when the network is active. |
boolean bindProcessToNetwork (Network network)
将当前进程绑定到network
。 将来创建的所有套接字(并且未通过绑定的SocketFactory从Network.getSocketFactory()
明确绑定)将被绑定到network
。 所有主机名解析也将被限制为network
。 请注意,如果network
断开连接,则以此方式创建的所有套接字将停止工作,并且所有主机名解析都将失败。 这是设计的,所以应用程序不会意外地使用它认为仍然绑定到特定Network
。 清除绑定通过null
为network
。 使用由Network.getSocketFactory()。createSocket()创建的单独绑定的套接字并通过Network.getAllByName
执行网络特定的主机名解析Network.getAllByName
调用bindProcessToNetwork
。
Parameters | |
---|---|
network |
Network : The Network to bind the current process to, or null to clear the current binding. |
Returns | |
---|---|
boolean |
true on success, false if the Network is no longer valid. |
Network getActiveNetwork ()
返回与当前活动的默认数据网络相对应的Network
对象。 如果当前活动的默认数据网络断开连接,则返回的Network
对象将不再可用。 当没有默认网络时,这将返回null
。
此方法要求调用方持有权限 ACCESS_NETWORK_STATE
。
Returns | |
---|---|
Network |
a Network object for the current default network or null if no default network is currently active |
NetworkInfo getActiveNetworkInfo ()
返回有关当前活动默认数据网络的详细信息。 连接时,此网络是传出连接的默认路由。 在启动网络通信之前,您应始终检查isConnected()
。 当没有默认网络时,这可能会返回null
。
此方法要求调用方拥有权限 ACCESS_NETWORK_STATE
。
Returns | |
---|---|
NetworkInfo |
a NetworkInfo object for the current default network or null if no default network is currently active |
NetworkInfo[] getAllNetworkInfo ()
此方法在API级别23中已弃用。
此方法不支持多个相同类型的连接网络。 改为使用getAllNetworks()
和getNetworkInfo(android.net.Network)
。
返回有关设备支持的所有网络类型的连接状态信息。
此方法要求调用方拥有权限 ACCESS_NETWORK_STATE
。
Returns | |
---|---|
NetworkInfo[] |
an array of NetworkInfo objects. Check each getType() for which type each applies. |
Network[] getAllNetworks ()
返回框架当前跟踪的所有 Network
的数组。
此方法要求调用方拥有权限 ACCESS_NETWORK_STATE
。
Returns | |
---|---|
Network[] |
an array of Network objects. |
boolean getBackgroundDataSetting ()
此方法在API级别14中已弃用。
从ICE_CREAM_SANDWICH
,背景数据的可用性取决于几个组合因素,并且此方法将始终返回true
。 相反,当后台数据不可用时, getActiveNetworkInfo()
现在将显示为已断开连接。
返回背景数据使用设置的值。 如果为false,则应用程序不应该在前台使用网络。 开发者应该尊重这个设置,并且在执行任何后台数据操作之前检查这个值。
所有具有使用网络的后台服务的应用程序都应该听 ACTION_BACKGROUND_DATA_SETTING_CHANGED
。
Returns | |
---|---|
boolean |
Whether background data usage is allowed. |
Network getBoundNetworkForProcess ()
返回 Network
当前通过绑定到这个过程 bindProcessToNetwork(Network)
,或 null
如果没有 Network
明确的约束。
Returns | |
---|---|
Network |
Network to which this process is bound, or null . |
ProxyInfo getDefaultProxy ()
获取当前的默认HTTP代理设置。 如果全局代理设置将被退回,否则,如果这个过程被绑定到Network
使用bindProcessToNetwork(Network)
那么Network
返回的代理,否则将返回默认的网络代理。
Returns | |
---|---|
ProxyInfo |
the ProxyInfo for the current HTTP proxy, or null if no HTTP proxy is active. |
LinkProperties getLinkProperties (Network network)
获取LinkProperties
对于给定Network
。 如果网络未知,这将返回null
。
此方法要求调用方拥有权限 ACCESS_NETWORK_STATE
。
Parameters | |
---|---|
network |
Network : The Network object identifying the network in question. |
Returns | |
---|---|
LinkProperties |
The LinkProperties for the network, or null . |
NetworkCapabilities getNetworkCapabilities (Network network)
获取NetworkCapabilities
对于给定Network
。 如果网络未知,这将返回null
。
此方法要求调用方拥有权限 ACCESS_NETWORK_STATE
。
Parameters | |
---|---|
network |
Network : The Network object identifying the network in question. |
Returns | |
---|---|
NetworkCapabilities |
The NetworkCapabilities for the network, or null . |
NetworkInfo getNetworkInfo (int networkType)
此方法在API级别23中已弃用。
此方法不支持多个相同类型的连接网络。 改为使用getAllNetworks()
和getNetworkInfo(android.net.Network)
。
返回有关特定网络类型的连接状态信息。
此方法要求调用方拥有权限 ACCESS_NETWORK_STATE
。
Parameters | |
---|---|
networkType |
int : integer specifying which networkType in which you're interested. |
Returns | |
---|---|
NetworkInfo |
a NetworkInfo object for the requested network type or null if the type is not supported by the device. |
NetworkInfo getNetworkInfo (Network network)
返回有关特定网络的连接状态信息。
此方法要求调用方拥有权限 ACCESS_NETWORK_STATE
。
Parameters | |
---|---|
network |
Network : Network specifying which network in which you're interested. |
Returns | |
---|---|
NetworkInfo |
a NetworkInfo object for the requested network or null if the Network is not valid. |
int getNetworkPreference ()
此方法在API级别21中已弃用。
功能已被删除,因为它不再有意义,有两个以上的网络 - 我们需要一个数组来表示偏好。 相反,我们使用网络的动态网络属性来描述它们的优先级。
检索当前的首选网络类型。
此方法要求调用方拥有权限 ACCESS_NETWORK_STATE
。
Returns | |
---|---|
int |
an integer representing the preferred network type |
Network getProcessDefaultNetwork ()
此方法在API级别23中已弃用。
使用此功能可能会导致其他功能投掷IllegalStateException
。 改为使用getBoundNetworkForProcess()
。 getBoundNetworkForProcess
是直接替换。
返回 Network
当前通过绑定到这个过程 bindProcessToNetwork(Network)
,或 null
如果没有 Network
明确的约束。
Returns | |
---|---|
Network |
Network to which this process is bound, or null . |
int getRestrictBackgroundStatus ()
确定调用应用程序在后台运行时是否受到计量网络限制的影响。
Returns | |
---|---|
int |
RESTRICT_BACKGROUND_STATUS_DISABLED , RESTRICT_BACKGROUND_STATUS_ENABLED , or RESTRICT_BACKGROUND_STATUS_WHITELISTED |
boolean isActiveNetworkMetered ()
返回当前活动的数据网络是否被测量。 由于货币成本,数据限制或电池/性能问题,当用户对该连接上的大量数据使用敏感时,网络被分类为计量。 在进行大量数据传输之前,您应该先检查并警告用户或延迟操作,直到有另一个网络可用。
此方法要求调用方拥有权限 ACCESS_NETWORK_STATE
。
Returns | |
---|---|
boolean |
true if large transfers should be avoided, otherwise false . |
boolean isDefaultNetworkActive ()
返回数据网络当前是否处于活动状态。 主动网络意味着它当前处于高功率状态以执行数据传输。 在某些类型的网络中,移动并停留在这种状态可能会很昂贵,因此当无线电已经处于此状态时,将网络流量分配到一起会更节能。 此方法会告诉您现在是否是发起网络流量的好时机,因为网络已经处于活动状态。
Returns | |
---|---|
boolean |
boolean isNetworkTypeValid (int networkType)
此方法在API级别23中已弃用。
所有接受网络类型的API都被弃用。 应该不需要验证网络类型。
测试给定的整数是否表示有效的网络类型。
Parameters | |
---|---|
networkType |
int : the type to be tested |
Returns | |
---|---|
boolean |
a boolean. true if the type is valid, else false |
void registerDefaultNetworkCallback (ConnectivityManager.NetworkCallback networkCallback)
注册接收有关系统默认网络更改的通知。 回调将继续被调用,直到应用程序退出或unregisterNetworkCallback(NetworkCallback)
。
此方法要求调用方拥有权限 ACCESS_NETWORK_STATE
。
Parameters | |
---|---|
networkCallback |
ConnectivityManager.NetworkCallback : The ConnectivityManager.NetworkCallback that the system will call as the system default network changes. |
void registerNetworkCallback (NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback)
注册接收有关满足给定NetworkRequest
所有网络的通知。 回调将继续被调用,直到应用程序退出或链接#unregisterNetworkCallback(NetworkCallback)}被调用。
此方法要求调用方拥有权限 ACCESS_NETWORK_STATE
。
Parameters | |
---|---|
request |
NetworkRequest : NetworkRequest describing this request. |
networkCallback |
ConnectivityManager.NetworkCallback : The ConnectivityManager.NetworkCallback that the system will call as suitable networks change state. |
void registerNetworkCallback (NetworkRequest request, PendingIntent operation)
当满足给定的NetworkRequest
的网络可用时,注册待发送的PendingIntent。 这个函数行为相同,需要一个NetworkCallback的版本,但不是ConnectivityManager.NetworkCallback
一个PendingIntent
使用。 这意味着该请求可能会超出呼叫应用程序,并在找到合适的网络时被回叫。
该操作是一个Intent广播,通过一个AndroidManifest.xml文件中的<receiver>标签注册到您在 registerReceiver(BroadcastReceiver, IntentFilter)
注册的广播接收器
操作Intent提供了两个附加功能,一种为 Network
, Network
一种为 Network
, Network
一种为 EXTRA_NETWORK
, NetworkRequest
一种为 EXTRA_NETWORK_REQUEST
其中包含原始请求参数。
如果已经有一个请求注册了这个Intent(两个Intents的等 filterEquals(Intent)
由 filterEquals(Intent)
定义),那么它将被删除并被这个替换,从而有效地释放先前的 NetworkRequest
。
请求可能通过调用 unregisterNetworkCallback(android.app.PendingIntent)
正常释放。
此方法要求调用方拥有权限 ACCESS_NETWORK_STATE
。
Parameters | |
---|---|
request |
NetworkRequest : NetworkRequest describing this request. |
operation |
PendingIntent : Action to perform when the network is available (corresponds to the onAvailable(Network) call. Typically comes from getBroadcast(Context, int, Intent, int) . Cannot be null. |
void releaseNetworkRequest (PendingIntent operation)
删除通过 requestNetwork(NetworkRequest, android.app.PendingIntent)
提出的请求
此方法在释放网络资源和断开连接方面与 unregisterNetworkCallback(android.app.PendingIntent)
具有相同的行为。
Parameters | |
---|---|
operation |
PendingIntent : A PendingIntent equal (as defined by filterEquals(Intent) ) to the PendingIntent passed to requestNetwork(NetworkRequest, android.app.PendingIntent) with the corresponding NetworkRequest you'd like to remove. Cannot be null. |
void removeDefaultNetworkActiveListener (ConnectivityManager.OnNetworkActiveListener l)
删除先前用 addDefaultNetworkActiveListener(ConnectivityManager.OnNetworkActiveListener)
注册的网络主动侦听 addDefaultNetworkActiveListener(ConnectivityManager.OnNetworkActiveListener)
。
Parameters | |
---|---|
l |
ConnectivityManager.OnNetworkActiveListener : Previously registered listener. |
void reportBadNetwork (Network network)
此方法在API级别23中已弃用。
使用reportNetworkConnectivity(Network, boolean)
可以报告工作连接和非工作连接。
向框架报告问题网络。 这向系统提供了一个提示,即该网络上可能存在连接问题,并可能导致框架重新评估网络连接和/或切换到另一个网络。
Parameters | |
---|---|
network |
Network : The Network the application was attempting to use or null to indicate the current default network. |
void reportNetworkConnectivity (Network network, boolean hasConnectivity)
向框架报告网络是否具有连通性。 这为系统提供了一个提示,即特定网络是否提供工作连接。 作为回应,该框架可能会重新评估网络的连通性,并可能在此后采取进一步行动。
Parameters | |
---|---|
network |
Network : The Network the application was attempting to use or null to indicate the current default network. |
hasConnectivity |
boolean : true if the application was able to successfully access the Internet using network or false if not. |
boolean requestBandwidthUpdate (Network network)
请求给定Network
带宽更新并返回ConnectivityService是否接受更新请求。 一旦接受,ConnectivityService将轮询底层网络连接以获取更新的带宽信息。 如果有更新,调用者将通过ConnectivityManager.NetworkCallback
通知。 请注意,此方法假定调用方先前已调用registerNetworkCallback(NetworkRequest, NetworkCallback)
来侦听网络更改。
Parameters | |
---|---|
network |
Network : Network specifying which network you're interested. |
Returns | |
---|---|
boolean |
true on success, false if the Network is no longer valid. |
void requestNetwork (NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback)
请求网络满足一组NetworkCapabilities
。 这NetworkRequest
将直到通过unregisterNetworkCallback(NetworkCallback)
发布或呼叫应用程序退出。 通过收听ConnectivityManager.NetworkCallback
描述的各种回调,可以跟踪请求的状态。 Network
可用于将流量引导至网络。
目前不支持请求具有可变 NetworkCapabilities
的网络,例如 NET_CAPABILITY_VALIDATED
或 NET_CAPABILITY_CAPTIVE_PORTAL
因为这些 NetworkCapabilities
表示特定网络可能永远不会达到的状态,并且在启动网络之前网络是否会达到这些状态是未知的,因此该框架没有知道如何去满足具有这些能力的请求。
此方法要求主叫方保持 CHANGE_NETWORK_STATE
权限或修改 canWrite(Context)
确定的系统设置的 canWrite(Context)
。
Parameters | |
---|---|
request |
NetworkRequest : NetworkRequest describing this request. |
networkCallback |
ConnectivityManager.NetworkCallback : The ConnectivityManager.NetworkCallback to be utilized for this request. Note the callback must not be shared - they uniquely specify this request. |
Throws | |
---|---|
IllegalArgumentException |
if request specifies any mutable NetworkCapabilities . |
void requestNetwork (NetworkRequest request, PendingIntent operation)
要求网络满足一组NetworkCapabilities
。 这个函数行为相同,需要一个NetworkCallback的版本,但不是ConnectivityManager.NetworkCallback
一个PendingIntent
使用。 这意味着该请求可能会超出呼叫应用程序,并在找到合适的网络时被回叫。
该操作是一个Intent广播,转到您通过AndroidManifest.xml文件中的 registerReceiver(BroadcastReceiver, IntentFilter)
或<receiver>标记注册的广播接收器
操作意图有两个额外交付,一个Network
类型的额外称为EXTRA_NETWORK
和NetworkRequest
类型的额外称为EXTRA_NETWORK_REQUEST
包含原始请求参数。 在完成意向处理以保留网络之前创建一个新的,基于ConnectivityManager.NetworkCallback
的请求非常重要,或者将在意向处理后不久发布。
如果已经有一个请求注册了这个Intent(两个Intents的等 filterEquals(Intent)
由 filterEquals(Intent)
定义),那么它将被删除并被这个替换,从而有效地释放先前的 NetworkRequest
。
通过调用 releaseNetworkRequest(android.app.PendingIntent)
可以正常释放该请求。
由于这些 NetworkCapabilities
代表特定网络可能永远不会达到的状态,并且网络是否会达到这些状态在启动网络之前是未知的,所以目前不支持请求具有 NET_CAPABILITY_VALIDATED
或 NET_CAPABILITY_CAPTIVE_PORTAL
的网络,因此框架不知道如何用这些功能去满足一个请求。
此方法要求主叫方保持 CHANGE_NETWORK_STATE
权限或修改 canWrite(Context)
确定的系统设置的 canWrite(Context)
。
Parameters | |
---|---|
request |
NetworkRequest : NetworkRequest describing this request. |
operation |
PendingIntent : Action to perform when the network is available (corresponds to the onAvailable(Network) call. Typically comes from getBroadcast(Context, int, Intent, int) . Cannot be null. |
Throws | |
---|---|
IllegalArgumentException |
if request contains either NET_CAPABILITY_VALIDATED or NET_CAPABILITY_CAPTIVE_PORTAL . |
boolean requestRouteToHost (int networkType, int hostAddress)
此方法在API级别21中已弃用。
不赞成使用,因为的requestNetwork(NetworkRequest, NetworkCallback)
, bindProcessToNetwork(Network)
和getSocketFactory()
API。 在M
及以上版本中,此方法不受支持,并且如果调用将抛出UnsupportedOperationException
。
确保存在网络路由以通过指定的网络接口将流量传送到指定的主机。 尝试添加已存在的路线会被忽略,但会视为成功。
此方法要求调用方保持 CHANGE_NETWORK_STATE
权限或修改 canWrite(Context)
确定的系统设置的能力。
Parameters | |
---|---|
networkType |
int : the type of the network over which traffic to the specified host is to be routed |
hostAddress |
int : the IP address of the host to which the route is desired |
Returns | |
---|---|
boolean |
true on success, false on failure |
void setNetworkPreference (int preference)
此方法在API级别21中已弃用。
功能已被删除,因为它不再有意义,有两个以上的网络 - 我们需要一个数组来表示偏好。 相反,我们使用网络的动态网络属性来描述它们的优先级。
指定首选网络类型。 当设备具有多种可用类型时,将使用首选的网络类型。
Parameters | |
---|---|
preference |
int : the network type to prefer over all others. It is unspecified what happens to the old preferred network in the overall ordering. |
boolean setProcessDefaultNetwork (Network network)
此方法在API级别23中已弃用。
这个函数可以抛出IllegalStateException
。 改为使用bindProcessToNetwork(Network)
。 bindProcessToNetwork
是直接替换。
将当前进程绑定到network
。 将来创建的所有套接字(并且未通过绑定的SocketFactory从Network.getSocketFactory()
明确绑定)将被绑定到network
。 所有主机名解析也将被限制为network
。 请注意,如果network
断开连接, network
这种方式创建的所有套接字将停止工作,并且所有主机名解析都将失败。 这是设计的,所以应用程序不会意外地使用它认为仍然绑定到特定Network
。 通过null
清除绑定通过network
。 使用由Network.getSocketFactory()。createSocket()创建的单独绑定的套接字并通过Network.getAllByName
执行网络特定的主机名解析Network.getAllByName
调用setProcessDefaultNetwork
。
Parameters | |
---|---|
network |
Network : The Network to bind the current process to, or null to clear the current binding. |
Returns | |
---|---|
boolean |
true on success, false if the Network is no longer valid. |
int startUsingNetworkFeature (int networkType, String feature)
此方法在API级别21中已弃用。
弃用赞成清洁requestNetwork(NetworkRequest, NetworkCallback)
API。 在M
以及更高版本中,此方法不受支持,并且如果调用将抛出UnsupportedOperationException
。
告诉底层的网络系统,调用者想要开始使用命名的功能。 feature
的解释完全取决于每个联网实施。
此方法要求主叫方保持 CHANGE_NETWORK_STATE
权限或修改 canWrite(Context)
确定的系统设置的 canWrite(Context)
。
Parameters | |
---|---|
networkType |
int : specifies which network the request pertains to |
feature |
String : the name of the feature to be used |
Returns | |
---|---|
int |
an integer value representing the outcome of the request. The interpretation of this value is specific to each networking implementation+feature combination, except that the value -1 always indicates failure. |
int stopUsingNetworkFeature (int networkType, String feature)
此方法在API级别21中已弃用。
弃用赞成清洁unregisterNetworkCallback(NetworkCallback)
API。 在M
及更高版本中,此方法不受支持,如果调用将抛出UnsupportedOperationException
。
使用指定的功能告诉底层网络系统调用者已完成。 feature
的解释完全取决于每个联网实施。
此方法要求调用方保留 CHANGE_NETWORK_STATE
权限或修改 canWrite(Context)
确定的系统设置的 canWrite(Context)
。
Parameters | |
---|---|
networkType |
int : specifies which network the request pertains to |
feature |
String : the name of the feature that is no longer needed |
Returns | |
---|---|
int |
an integer value representing the outcome of the request. The interpretation of this value is specific to each networking implementation+feature combination, except that the value -1 always indicates failure. |
void unregisterNetworkCallback (ConnectivityManager.NetworkCallback networkCallback)
取消注册关于并可能释放来自requestNetwork(NetworkRequest, NetworkCallback)
和registerNetworkCallback(NetworkRequest, NetworkCallback)
调用的网络的registerNetworkCallback(NetworkRequest, NetworkCallback)
叫。 如果给定的NetworkCallback
先前已与#requestNetwork
使用, #requestNetwork
仅连接到满足该请求的任何网络都将断开连接。
Parameters | |
---|---|
networkCallback |
ConnectivityManager.NetworkCallback : The ConnectivityManager.NetworkCallback used when making the request. |
void unregisterNetworkCallback (PendingIntent operation)
注销先前通过 registerNetworkCallback(NetworkRequest, android.app.PendingIntent)
注册的回 registerNetworkCallback(NetworkRequest, android.app.PendingIntent)
。
Parameters | |
---|---|
operation |
PendingIntent : A PendingIntent equal (as defined by filterEquals(Intent) ) to the PendingIntent passed to registerNetworkCallback(NetworkRequest, android.app.PendingIntent) . Cannot be null. |