首页 > 代码库 > 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 }
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 };
2、在适当的地方注册Receiver,可以在程序中注册,在onCreate中调用如下函数即可:
1 IntentFilter intentFilter = new IntentFilter(); 2 intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 3 registerReceiver(connectionReceiver, intentFilter);
3、在适当时取消注册Receiver,可以在程序中取消,在onDestroye中调用如下函数即可:
1 if (connectionReceiver != null) { 2 unregisterReceiver(connectionReceiver); 3 }
Android中判断网络连接是否可用及监控网络状态
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。