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
原文地址:https://www.cnblogs.com/Miami/p/4210386.html