[Android] Android 监听WIFI

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值