首页 > 代码库 > Android中判断网络连接是否可用及监控网络状态

Android中判断网络连接是否可用及监控网络状态

来源:http://www.jb51.net/article/32920.htm

 

获取网络信息需要在AndroidManifest.xml文件中加入相应的权限。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

技术分享
 1 public boolean isNetworkConnected(Context context) {  2 if (context != null) {  3  4 ConnectivityManager mConnectivityManager = (ConnectivityManager) context  5 .getSystemService(Context.CONNECTIVITY_SERVICE);  6  7 NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();  8  9 if (mNetworkInfo != null) { 10 11 return mNetworkInfo.isAvailable(); 12 13 } 14 15 } 16 17 return false; 18 }
一,判断是否有网络连接
技术分享
 1 public boolean isWifiConnected(Context context) {  2 if (context != null) {  3  4 ConnectivityManager mConnectivityManager = (ConnectivityManager) context  5 .getSystemService(Context.CONNECTIVITY_SERVICE);  6  7 NetworkInfo mWiFiNetworkInfo = mConnectivityManager  8 .getNetworkInfo(ConnectivityManager.TYPE_WIFI);  9 10 if (mWiFiNetworkInfo != null) { 11 12 return mWiFiNetworkInfo.isAvailable(); 13 14 } 15 16 } 17 18 return false; 19 }
二,判断WIFI网络是否可用
技术分享
 1 public boolean isMobileConnected(Context context) {  2  3 if (context != null) {  4  5 ConnectivityManager mConnectivityManager = (ConnectivityManager) context  6 .getSystemService(Context.CONNECTIVITY_SERVICE);  7  8 NetworkInfo mMobileNetworkInfo = mConnectivityManager  9 .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 10 11 if (mMobileNetworkInfo != null) { 12 13 return mMobileNetworkInfo.isAvailable(); 14 15 } 16 17 } 18 19 return false; 20 }
三,判断移动网络是否可用
技术分享
 1 public static int getConnectedType(Context context) {  2  3 if (context != null) {  4  5 ConnectivityManager mConnectivityManager = (ConnectivityManager) context  6 .getSystemService(Context.CONNECTIVITY_SERVICE);  7  8 NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();  9 10 if (mNetworkInfo != null && mNetworkInfo.isAvailable()) { 11 12 return mNetworkInfo.getType(); 13 14 } 15 16 } 17 18 return -1; 19 }
四,获取当前网络连接的类型信息

在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒。一般可以通过ConnectivityManager来完成该工作。
ConnectivityManager有四个主要任务
1、监听手机网络状态(包括GPRS,WIFI, UMTS等)
2、手机状态发生改变时,发送广播
3、当一个网络连接失败时进行故障切换
4、为应用程序提供可以获取可用网络的高精度和粗糙的状态
当我们要在程序中监听网络状态时,只要一下几个步骤即可:
1、定义一个Receiver重载其中的onReceive函数,在其中完成所需要的功能,如根据WIFI和GPRS是否断开来改变空间的外观 

技术分享
 1 connectionReceiver = new BroadcastReceiver() {  2 @Override  3 public void onReceive(Context context, Intent intent) {  4 ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);  5 NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);  6 NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);  7 if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {  8 Log.i(TAG, "unconnect");  9 // unconnect network 10 }else { 11 // connect network 12 } 13 } 14 };
View Code

2、在适当的地方注册Receiver,可以在程序中注册,在onCreate中调用如下函数即可:

技术分享
1 IntentFilter intentFilter = new IntentFilter(); 2 intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 3 registerReceiver(connectionReceiver, intentFilter);
View Code

3、在适当时取消注册Receiver,可以在程序中取消,在onDestroye中调用如下函数即可:

技术分享
1 if (connectionReceiver != null) { 2 unregisterReceiver(connectionReceiver); 3 }
View Code

 

Android中判断网络连接是否可用及监控网络状态