请教如何判断wifi是否连接上网络了

appleibm 2013-09-29 07:21:52
wifi打开,连接到网络获得了IP才算连接上,有办法在activity启动的时候判断吗?
另外有没有办法监听断开了wifi网络连接和连接上了wifi网络连接?
...全文
909 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
appleibm 2013-10-01
  • 打赏
  • 举报
回复
今天定制了一个10元流量包测试了一下,联通3G打开和关闭,不触发NETWORK_STATE_CHANGED_ACTION,可能移动的也不会触发。再次感谢@tantahe,祝节日快乐!
tantahe 2013-10-01
  • 打赏
  • 举报
回复
引用 3 楼 appleibm 的回复:
今天定制了一个10元流量包测试了一下,联通3G打开和关闭,不触发NETWORK_STATE_CHANGED_ACTION,可能移动的也不会触发。再次感谢@tantahe,祝节日快乐!
WifiManager.NETWORK_STATE_CHANGED_ACTION只是用来判断WIFI网络连接状态的,移动网络连接状态的改变不会发送这个广播。
tantahe 2013-09-30
  • 打赏
  • 举报
回复
判断WIFI是否连接:
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if(wifi == State.CONNECTED){
	//WIFI已连接
}
监听WifiManager.NETWORK_STATE_CHANGED_ACTION可以获取WIFI网络连接状态改变的广播 监听WifiManager.WIFI_STATE_CHANGED_ACTION可以获取WIFI状态改变的广播(打开、关闭、正在打开、正在关闭、未知)。
	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		System.out.println(intent.getAction());
		if(intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION))
		{
			//信号强度改变
			int strength=getStrength(context);
			System.out.println("当前信号 "+strength);
		}else if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){
			System.out.println("网络状态改变");
			NetworkInfo info=intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
			if(info.getState().equals(NetworkInfo.State.DISCONNECTED))
			{
				//WIFI网络断开
			} else if(...){
				//其他状态
			}
		}else if(intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION))
		{
			//WIFI开关
			int wifistate=intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,WifiManager.WIFI_STATE_DISABLED);
			if(wifistate==WifiManager.WIFI_STATE_DISABLED)
			{
				//WIFI关闭
			} else if(...){
				//其他状态
			}
		}
 
	}
需要权限:
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
appleibm 2013-09-30
  • 打赏
  • 举报
回复
@tantahe,非常感谢。 第一段代码判断WIFI是否连接,我测试的是wifi连接上IP了,也就是在通知栏出现了那个wifi信号强度图标,才wifi == State.CONNECTED,如果仅仅是wifi打开了,附近有好多热点,但是一个也没有登录上的话,wifi的状态不是State.CONNECTED。 第二段代码,wifi打开,以及wifi连接上了热点,状态都能侦测到。不过这个NETWORK_STATE_CHANGED_ACTION,不仅仅是wifi登录或者退出触发,3G网络登录或者退出可能也会触发,我这几天申请个联通3G测试一下看。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧