现在的位置: 首页 > 综合 > 正文

检查网络连接状况

2013年08月25日 ⁄ 综合 ⁄ 共 1253字 ⁄ 字号 评论关闭
不管在什么时候,当你的应用需要去访问网络时,你事先都应该知道设备当前已经连上了网络。为了更好的获取设备的网络连接状态,Android提供了两个class来做这件事,分别是ConnectivityManager和NetworkInfo。
一般情况下我们都不需要主动的创建ConnectivityManager对象实例,我们可以通过上下文对象Context来获取一个实例
ConnectivityManager connManager =
   (ConnectivityManager)context.
   getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager本身其实并没有多大的作用,但它可以获取到NetworkInfo对象(获取当前的网络连接状态)。有三种方式可以获取到NetworkInfo对象,但是如果你想马上知道网络连接状态的话,下面做法效果最好
NetworkInfo info = connManager.getActiveNetworkInfo();
或者你也可以通过ConnectivityManager获取到系统中一组可用的NetworkInfo对象。每一个NetworkInfo都代表了一种网络类型(e.g. WIFI)。
NetworkInfo info = connManager.getAllNetworkInfo();
通过NetworkInfo对象你能获取到关于一种网络类型所有的信息。你可以检测某一种网络类型当前是否可用,如果当前已经连接到网络了,你能获取到当前连接的网络是那种类型
下面是一些NetworkInfo类比较重要的方法。屏幕上显示的是这些方法执行的结果(WIFI或者UMTS网络的信息 )
info.isAvailable()
info.isConnected()
info.isConnectedOrConnecting()
info.getState()
info.getDetailedState()
info.getTypeName()
info.getType()
info.getSubtypeName()
info.getSubtype()

NetworkInfo showing only disconnected states

NetworkInfo showing only disconnected states

NetworkInfo showing an established WIFI connection

NetworkInfo showing an established WIFI connection

NetworkInfo showing an established UMTS connection

NetworkInfo showing an established UMTS connection

访问网络的连接状态需要明确的在manifest文件中声明权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

抱歉!评论已关闭.