博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Android] Android 监听WIFI
阅读量:7108 次
发布时间:2019-06-28

本文共 3786 字,大约阅读时间需要 12 分钟。

hot3.png

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());            }        }    }}

转载于:https://my.oschina.net/u/242041/blog/201614

你可能感兴趣的文章
VMware ESXI 虚拟磁盘工具 - vmkfstools
查看>>
决心书
查看>>
inux命令之dot - 绘制DOT语言脚本描述的图形
查看>>
Row Cache For InnoDB 第二版优化(附带安装和配置说明)
查看>>
第十一课-布局反射器
查看>>
我的友情链接
查看>>
linux 管理参数调节
查看>>
BOM详解
查看>>
2017-3-27日碎碎念
查看>>
我的友情链接
查看>>
配置linux批量修改密码,含自动方式
查看>>
SQL Server会写入哪些注册表?
查看>>
ORACLE 归档模式
查看>>
OFFICE 2007 SP3后续补丁微软官方下载地址
查看>>
Windows Phone 联系人管理
查看>>
zabbix监控redis多实例
查看>>
启动流程
查看>>
"Volume Shadow Copy Service" error
查看>>
JDBC连接Oracle数据库时出现的ORA-12505错误及解决办法
查看>>
crontab 计划任务 linux计划任务基本
查看>>