找回密码
 注册
搜索
查看: 2163|回复: 1

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

[复制链接]
发表于 2014-12-14 20:55:39 | 显示全部楼层 |阅读模式
目前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判断做相应的处理。
 楼主| 发表于 2014-12-14 20:57:36 | 显示全部楼层

如何判断Android手机当前是否联网?

在Android手机中判断是否联网可以通过 ConnectivityManager 类的isAvailable()方法判断,

首先获取网络通讯类的实例

ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); ,

使用cwjManager.getActiveNetworkInfo().isAvailable(); 来返回是否有效,如果为True则表示当前Android手机已经联网,可能是WiFi或GPRS、HSDPA等等,

具体的可以通过ConnectivityManager 类的getActiveNetworkInfo() 方法判断详细的接入方式,

需要注意的是有关调用需要加入

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 这个权限。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2025-5-4 23:40 , Processed in 0.015601 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表