检查网络连接状况


译自:http://www.grokkingandroid.com/android-checking-connectivity/

不管在什么时候,当你的应用需要去访问网络时,你事先都应该知道设备当前已经连上了网络。为了更好的获取设备的网络连接状态,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

检查网络连接状况_第1张图片

NetworkInfo showing an established WIFI connection

检查网络连接状况_第2张图片

NetworkInfo showing an established UMTS connection




















访问网络的连接状态需要明确的在manifest文件中声明权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
相关文章:
  • Android: Getting Notified of Connectivity Changes












你可能感兴趣的:(android)