代码改变世界

Android系列之如何判断网络链接状态

2010-07-29 10:40  $等待$  阅读(9790)  评论(4编辑  收藏  举报

昨天晚上又失眠!最近一些事情让我很郁闷!哎!!
言归正传下面咱们讨论下Android手机判断网络链接状态的技术实现吧
目前Android操作系统的手机大部分支持WIFI,GSM,3G网络通信,但是每次链接到网络时只能选择一种链接方式,
比如运营商定制的,还必须要求特定的网络环境(CMWAP,CTWAP等)如果要切换网络还需要先关闭现有的网络,
然后再启动新的网络,这个转换过程还需要一定的时间,
可能程序这时还需要知道心的网络是否链接成功后自动登录到新的网络服务器中,
那怎么知道几时链接成功呢?这个时间需要多久呢?
也许用一个线程去监听网络状态是否链接成功;
我们可以用另外一种方法,PhoneStateListener
没错,你没看错,就是用PhoneStateListener。
很多应用PhoneStateListener都是监听来电去电,PhoneStateListener还可以监听网络断开、
正在连接和连接成功。

 

1 final TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
2 mTelephonyMgr.listen(new PhoneStateListener(){
3
4 @Override
5 public void onDataConnectionStateChanged(int state) {
6 switch(state){
7 case TelephonyManager.DATA_DISCONNECTED://网络断开
8   break;
9 case TelephonyManager.DATA_CONNECTING://网络正在连接
10   break;
11 case TelephonyManager.DATA_CONNECTED://网络连接上
12   break;
13 }
14 }
15
16 }

 

PhoneStateListener.LISTEN_DATA_CONNECTION_STATE); 
我们只要重载onDataConnectionStateChanged方法,根据state判断做相应的处理。