ConnectivityManager有四个主要任务:
1、监听手机网络状态(包括GPRS,WIFI, UMTS等)
2、手机状态发生改变时,发送广播
3、当一个网络连接失败时进行故障切换
4、为应用程序提供可以获取可用网络的高精度和粗糙的状态
android平台手机来说:可能会存在4中状态
1.无网络(这种状态可能是因为手机停机,网络没有开启,信号不好等原因)
2.使用WIFI上网
3.CMWAP(中国移动代理)
4.CMNET上网
常用方法
ConnectivityManager mConnManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnManager.getActiveNetworkInfo();
然后结合判断其状态来判断当前网络状况
getActiveNetworkInfo()
返回有关当前活动的默认数据网络的详细信息。 当连接时,此网络是传出连接的默认路由
。您应该始终检查isConnected()当没有默认值时,这可能返回null
isConnected和isAvailable的 区别
isAvailable()—指示是否可以进行网络连接。
网络不可用的状态
当持续或半持久状态阻止连接网络的可能性
(1)该设备不在任何此类网络的覆盖范围内。
(2)设备位于家庭网络以外的网络(即漫游)上
(3)数据漫游已被禁用
(4)启用了飞行模式
isConnected()–牵涉到网络读写数据时,请调用此方法
指示网络连接是否存在,并且可以建立连接和传递数据。在尝试执行数据事务之前,始终
调用此方法。
isConnectedOrConnecting()
指示网络连接是否存在或正在被建立中。 这对于需要的应用程序是有好处的
做任何与网络相关的数据,而不是读或写数据
isRoaming()
指示设备当前是否正在该网络上漫游。当返回true时,建议在此网络上使用数据
isMetered()
如果此网络被计量,则返回。 网络被分类为计量
当用户对该连接上的大量数据使用敏感,当因为货币成本,数据限制或电池/性能问题。
您在进行大量数据传输之前应该检查一下,并警告用户或延迟操作,直到另一个网络可用
isFailover()
指示当前尝试连接到网络由ConnectivityManager尝试故障切换到这一点网络与其他网络断
开连接,如果这是故障切换尝试则返回true
通过判断mNetworkInfo.getType()是以下哪一种类型
ConnectivityManager.TYPE_MOBILE:移动数据
ConnectivityManager.TYPE_WIFI:WIFI数据
public class NetWorkUtil {
private static final int CMNET =