API之ConnectivityManager解释

本文介绍了Android系统中的ConnectivityManager类,该类用于监视网络连接状态,并在连接发生变化时通知应用程序。文章详细列举了各种网络类型的常量定义及类的主要方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.lang.Object
↳ android.net.ConnectivityManager


  • 该类的概述
    这是一个网络连接状态的查询类。当网络连接的变化事,它也能通知应用程序。
    通过Context.getSystemService(Context.CONNECTIVITY_SERVICE)来调用这个类的实例。

  • 该类的主要责任
    1. 监视网络连接(Wi-Fi、GPRS、UMTS、等)
    2. 当网络连接改变时发送广播试图
    3. 当一个网络连接失败时试图切换到另一个网络
    4. 提供给允许应用程序一个查询粗粒度或细粒度状态的可用网络的应用接口

  • 常数
StringACTION_BACKGROUND_DATA_SETTING_CHANGED
已过时。
说明:这个常数在API16(Android 4.1)中被否决。自安卓4.0起,后台数据的可用性取决于几个综合因素,这个广播不再被发送。相反的,当后台数据不可用时,getActiveNetworkInfo()将会断开连接。在平台升级后的第一次启动过程中,在升级前一旦getBackgroundDataSetting()返回的是false,那么这个广播将被发送。
广播动作:后台数据使用设置更改了值。通过getBackgroundDataSetting()得到当前值。
返回的常数值: “android.net.conn.BACKGROUND_DATA_SETTING_CHANGED”。
StringCONNECTIVITY_ACTION
在网络连接中出现的一个变化。已被建立或断开的一个连接。
如果当前网络是从无法连接的网络切换到可连接的网络,那么FAILOVER_CONNECTION被设置为true。NetworkInfo会受网络影响而被额外地发送,它可以查询到网络连接的相关信息。
当网络连接失败,连接管理器试图去连接(或已连接)到另一个网络,那么NetworkInfo会因为这个新网络而被额外的通过。这种情况下,广播的接收类不需要告诉使用者们当前没有数据流量。反之,这个接收类立即等待另一个指示网络切换成功(整体数据连接)或切换失败(所有的数据连接已丢失)的广播。
返回的常数值:”android.net.conn.CONNECTIVITY_CHANGE”
StringEXTRA_EXTRA_INFO
说明:提供网络状态的额外信息查询关键字符串。这些信息可能从脚底的网络层传出,对于特定的网络类型来说它的意义可能是特定的。通过 getStringExtra(String)来获取。
返回的常数值:”extraInfo”
StringEXTRA_IS_FAILOVER
StringEXTRA_EXTRA_INFO
说明:是一个获取布尔值的查询关键字。它指的是在网络断开时,网络连接管理器是否成功切换到另一个可用网络。通过getBooleanExtra(String, boolean)查询。
返回的常数值:”isFailover”
StringEXTRA_NETWORK_INFO
这个常数在API14(Android 4.0)时已弃用。
说明:由于NetworkInfo基于UID(每个软件安装在手机的时候,手机都会分配一个UID为唯一标示)的不同而不同,应用程序可以通过getActiveNetworkInfo()或getAllNetworkInfo()来获取网络信息。
可以通过getParcelableExtra(String)获取NetworkInfo的对象的查找键。参见EXTRA_NETWORK_TYPE。
返回的常数值:”EXTRA_NETWORK_TYPE”
StringEXTRA_NETWORK_INFO
说明:可以出发CONNECTIVITY_ACTION广播的网络类型。在调用应用程序的基础上与 getNetworkInfo(int)一起使用来获取NetworkInfo的状态。参见getIntExtra(String, int)。
返回的常数值:”networkType”
StringEXTRA_NO_CONNECTIVITY
说明:一个布尔值的查找键,指是否存在一个完整的连接缺陷,即没有网络可以。通过getBooleanExtra(String, boolean)来查找。
返回的常数值:”noConnectivity”
StringEXTRA_OTHER_NETWORK_INFO
说明:一个NetworkInfo的对象查找键。当存在另一个可连接的网络时被提供。通过getParcelableExtra(String)获取。
返回的常数值:”otherNetwork”
StringEXTRA_REASON
说明:用于表示网络连接失败的字符串查找键。该字符串没有特定的结构。它的目的是用于向用户提交的通知。通过getStringExtra(String)获取。
返回的常数值:”reason”
intDEFAULT_NETWORK_PREFERENCE
这个常数在API18(Android 4.3)时已弃用。
说明:由于现在支持的网络较多,默认的单一网络偏好不能真正地表达网络层次。默认值在config.xml中通过networkAttributes来定义的。在应用程序中通过调用getNetworkPreference()来获取当前值。
如果你想设置默认的网络偏好,那么可以直接搞遍框架中config.xml中的networkAttributes。
返回的常数值:1 (0x00000001)
intTYPE_BLUETOOTH
说明:蓝牙数据连接。当被使用时,所有的数据流将默认使用这个网络类型的接口。
返回的常数值:7 (0x00000007)
intTYPE_DUMMY
说明:虚拟数据连接。这个不应该是使用在运输设备上。
返回的常数值:8 (0x00000008)
intTYPE_ETHERNET
说明:以太网(局域网的一种)数据连接。当被使用时,所有数据流将默认使用这个网络类型的接口(它有一个默认的路径)。
返回的常数值:9 (0x00000009)
intTYPE_MOBILE
说明:移动数据连接。当被使用时,所有数据流将默认使用这个网络类型的接口(它有一个默认的路径)。
返回的常数值:0 (0x00000000)
intTYPE_MOBILE_DUN
说明:特殊拨号联网的移动数据连接。这个网络类型可以使用与TYPE_MOBILE相同的网络接口,也可以使用不同的。
返回的常数值:4 (0x00000004)
intTYPE_MOBILE_HIPRI
说明:高优先级的移动数据连接。这种网络类型使用的网络接口与TYPE_MOBILE相同但路由设置不同。只有在请求的过程中才会获取移动的DNS服务器(Domain Name Server,域名服务器),如果没有没有默认路径存在,那么只能通过IP的明确要求通过requestRouteToHost(int, int)方法来导入这个接口。
返回的常数值:5 (0x00000005)
intTYPE_MOBILE_MMS
说明:多媒体移动数据连接。这个网络类型可以使用与TYPE_MOBILE相同的网络接口,也可以使用不同的。这个在应用系统需要与运营商的多媒体消息服务的服务器进行通话时使用。
返回的常数值:2 (0x00000002)
intTYPE_MOBILE_SUPL
说明:SUPL移动数据连接。(SUPL,secure user plane location, 用于移动电话和定位服务器之间进行通信的协议标准,作为OMA的标准。)这个网络类型可以使用与TYPE_MOBILE相同的网络接口,也可以使用不同的。这个在应用程序需要通过与运营商的SUPL服务通话来请求定位时使用。
返回的常数值:3 (0x00000003)
intTYPE_WIFI
说明:无线数据连接。当被使用时,所有数据流将默认使用这个网络类型的接口(它有一个默认的路径)。
返回的常数值:1 (0x00000001)
intTYPE_WIMAX
WIMAX(Worldwide Interoperability for Microwave Access,即全球微波互联接入)数据连接。当被使用时,所有数据流将默认使用这个网络类型的接口(它有一个默认的路径)。
返回的常数值:6 (0x00000006)

  • 公共方法
NetworkInfogetActiveNetworkInfo()
说明:返回当前活动的默认数据网络的详细信息。当连接时,对于其它网络,这个网络是默认的路径。你只要在使用网络流量前通过isConnected()来查询是否连接。当它返回的是null,那么当前没有默认的网络。
返回一个当前默认网络的NetworkInfo对象或者在网络时返回null。
该方法需要持有ACCESS_NETWORK_STATE的许可。
NetworkInfo[]getAllNetworkInfo()
说明:返回设备支持的所有网络类型的连接状态信息。
返回一个NetworkInfo数组。通过getType()来获取每一个应用的类型。
该方法需要持有ACCESS_NETWORK_STATE的许可。
booleangetBackgroundDataSetting ()
说明:该方法在API14(Android 4.0)时已弃用。
NetworkInfogetNetworkInfo (int networkType)
说明:返回一个请求网络类型的NetworkInfo连接状态的对象,如果当前设备不支持这个networkType参数指定的网络类型那么返回null。
该方法需要持有ACCESS_NETWORK_STATE的许可。
intgetNetworkPreference ()
说明:获取当前首选的网络类型。要注意的是,该方法只有在两个网络类型的情况下有意义,随着默认的网络类型越来越多,我们需要一个数组来列出它们的顺序。这个方法将很快被淘汰。
该方法需要持有ACCESS_NETWORK_STATE的许可。
booleanisActiveNetworkMetered ()
说明:当用户在该连接上使用大量数据,由于成本、数据的局限性和电池/性能的问题,这个网络被归类于计量。在做大量数据传输之前,您应该要检查并警告用户或延迟的另一个网络可用时再操作。
如果要避免大量的传输,那么返回true,否则返回false。
该方法需要持有ACCESS_NETWORK_STATE的许可。
static booleanisNetworkTypeValid (int networkType)
说明:测试一个指定的网络类型是否是有效。
booleanrequestRouteToHost (int networkType, int hostAddress)
说明:添加指定的网络接口向指定的主机提供流量的网络路由。添加已存在的路由会被忽略,但视为成功。
该方法需要持有CHANGE_NETWORK_STATE的许可。
voidsetNetworkPreference (int preference)
说明:设置首选的网络类型。当设备有一个以上的网络可用,那么首选的网络类型将被使用。要注意的是,该方法只有在两个网络类型的情况下有意义,随着默认的网络类型越来越多,我们需要一个数组来列出它们的顺序。这个方法将很快被淘汰。
intstartUsingNetworkFeature (int networkType, String feature)
说明:告诉顶层网络系统,调用方希望开始使用指定的功能。功能的特征完全取决于每一个网络的实现。
返回一个表示请求结果的整数值。此值的解释是特定于每一个网络实现+功能的组合,除了-1表示的是失败。
该方法需要持有CHANGE_NETWORK_STATE的许可。
intstopUsingNetworkFeature (int networkType, String feature)
说明:告诉顶层网络系统,调用方使用指定的功能完成。功能的特征完全取决于每一个网络的实现。
返回一个表示请求结果的整数值。此值的解释是特定于每一个网络实现+功能的组合,除了-1表示的是失败。
该方法需要持有CHANGE_NETWORK_STATE的许可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值