文档章节

[Android] Android 监听WIFI

枫兮兮
 枫兮兮
发布于 2014/02/20 20:05
字数 418
阅读 166
收藏 3

1.注册一个广播接收器,监听网络状态

private void Start()
    {
        IntentFilter filter = new IntentFilter();
        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
        filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
        this.registerReceiver(myBroadcastReceiver, filter);
    }

2.取消注册广播器

private void Stop(){
 this.unregisterReceiver(myBroadcastReceiver);
 }

3.新建监听类NetworkConnectChangedReceiver继承BroadcastReceiver

public class NetworkConnectChangedReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        // 这个监听wifi的打开与关闭,与wifi的连接无关
        if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction()))
        {
            int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
            switch (wifiState)
            {
            case WifiManager.WIFI_STATE_ENABLED:
                Log.e("APActivity", "WIFI_STATE_ENABLED");
                break;
            case WifiManager.WIFI_STATE_ENABLING:
                Log.e("APActivity", "WIFI_STATE_ENABLING");
                break;
            case WifiManager.WIFI_STATE_DISABLED:
                Log.e("APActivity", "WIFI_STATE_DISABLED");
                break;
            case WifiManager.WIFI_STATE_DISABLING:
                Log.e("APActivity", "WIFI_STATE_DISABLING");
                break;
            }
        }
        // 这个监听wifi的连接状态即是否连上了一个有效无线路由,当上边广播的状态是WifiManager.WIFI_STATE_DISABLING,和WIFI_STATE_DISABLED的时候,根本不会接到这个广播。
        // 在上边广播接到广播是WifiManager.WIFI_STATE_ENABLED状态的同时也会接到这个广播,当然刚打开wifi肯定还没有连接到有效的无线
        if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction()))
        {
            Parcelable parcelableExtra = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
            if (null != parcelableExtra)
            {
                NetworkInfo networkInfo = (NetworkInfo) parcelableExtra;
                switch (networkInfo.getState())
                {
                case CONNECTED:
                    Log.e("APActivity", "CONNECTED");
                    break;
                case CONNECTING:
                    Log.e("APActivity", "CONNECTING");
                    break;
                case DISCONNECTED:
                    Log.e("APActivity", "DISCONNECTED");
                    break;
                case DISCONNECTING:
                    Log.e("APActivity", "DISCONNECTING");
                    break;
                case SUSPENDED:
                    Log.e("APActivity", "SUSPENDED");
                    break;
                case UNKNOWN:
                    Log.e("APActivity", "UNKNOWN");
                    break;
                default:
                    break;
                }
            }
        }
        // 这个监听网络连接的设置,包括wifi和移动数据的打开和关闭。
        // 最好用的还是这个监听。wifi如果打开,关闭,以及连接上可用的连接都会接到监听。见log
        // 这个广播的最大弊端是比上边两个广播的反应要慢,如果只是要监听wifi,我觉得还是用上边两个配合比较合适
        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction()))
        {
            NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            if (info != null)
            {
                StringBuilder sb = new StringBuilder();
                sb.append("info.getTypeName() : " + info.getTypeName() + "\n");
                sb.append("getSubtypeName() : " + info.getSubtypeName() + "\n");
                sb.append("getState() : " + info.getState() + "\n");
                sb.append("getDetailedState() : " + info.getDetailedState().name() + "\n");
                sb.append("getDetailedState() : " + info.getExtraInfo() + "\n");
                sb.append("getType() : " + info.getType());
                Log.e("APActivity", sb.toString());
            }
        }
    }
}


本文转载自:http://www.cnblogs.com/wanghafan/archive/2013/01/10/2855096.html

共有 人打赏支持
枫兮兮
粉丝 10
博文 72
码字总数 27211
作品 0
成都
私信 提问
Android手机Wi-Fi及 Wi-Fi直连

> Android WIFI: 当手机成功连接到Wi-Fi热点以后,手机所产生的上网流量都是通过Wi-Fi来传输的,而手机的移动流量会被禁用。但是,我们现在有特殊的业务需求,需要让手机成功连接Wi-Fi后还可...

desaco
03/13
0
0
Android系列之Wifi定位

Android系列之Wifi定位 Broncho A1还不支持基站和WIFI定位,Android的老版本里是有NetworkLocationProvider的,它实现了基站和WIFI定位,但从 android 1.5之后就被移除了。本来想在broncho A...

欢喜王子WIY
2012/06/06
0
0
试谈android中WIFI源码

网上关于如何用代码设置wifi的文章一搜一大堆,小蒋在此就不再添乱了,我就试着给大家谈一谈wifi的源码吧。 首先,我还是得从代码入手,下面是设置打开wifi的相关代码: private WifiManage...

我不是咸蛋
2013/01/09
0
1
故意为之?安卓9.0以前的全部系统版本均受到“API-breaking”漏洞的影响

        Nightwatch Cybersecurity于8月29日发布消息称,发现Android新漏洞,它使恶意应用程序得以绕过权限检查和现有的防护,访问系统广播信息。根据该通报,这一漏洞的信息如下:  ...

嘶吼RoarTalk
2018/09/07
0
0
android Preference 基础讲解

在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局。当然,凡事都有例外,F...

张林思密达
2015/11/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

租房软件隐私保护如同虚设

近日,苏州市民赵先生向江苏新闻广播新闻热线025-84658888反映,他在“安居客”手机应用软件上浏览二手房信息,并且使用该软件自动生成的虚拟号码向当地一家中介公司进行咨询。可电话刚挂不久...

linux-tao
今天
1
0
分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
4
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
2
0
cocoapods 用法

cocoapods install pod install 更新本地已经install的仓库 更新所有的仓库 pod update --verbose --no-repo-update 更新制定的仓库 pod update ** --verbose --no-repo-update...

HOrange
今天
3
0
linux下socket编程实现一个服务器连接多个客户端

使用socekt通信一般步骤 1)服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。 2)客户端:socker()建立套接字,连接(connect)服务器,连接上后...

shzwork
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部