关于wifi连接与断开的监测

网上关于wifi打开或者关闭的监听例子还是比较多的,但是关于wifi连接到某一个point或者从某一个point断开的监听却比较少。经过研究,终于找到了对应得API。分享给大家。

下边直接上代码:
说明:这里是直接在Application里边注册的广播。代码注释已近很详细了,大家自己看。
isNetWorkConnected这个变量代表当前wifi是连接还是断开。

package com.benxun;

import android.app.Application;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.util.Log;
import android.widget.Toast;

public class AppApplication extends Application {
    private boolean isNetWorkConnected = false;

    public boolean isNetWorkConnected() {
        return isNetWorkConnected;
    }

    IntentFilter wifiFilter;
    BroadcastReceiver receiver;

    @Override
    public void onCreate() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        if (networkInfo != null) {
            isNetWorkConnected = networkInfo.isConnected();
        }
        wifiFilter = new IntentFilter();
        // 监听wifi enabled, disabled, enabling, disabling, or unknown状态
        wifiFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
        wifiFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
        // wifiFilter.addAction(WifiManager.EXTRA_SUPPLICANT_CONNECTED);
        receiver = new MyReciver();
        registerReceiver(receiver, wifiFilter);

        super.onCreate();
    }

    /**
     * 当终止利用程序对象时调用,不保证1定被调用,当程序是被内核终止以便为其他利用程序释放资源,那
     * 么将不会提示,并且不调用利用程序的对象的onTerminate方法而直接终止进 程
     */
    @Override
    public void onTerminate() {
        unregisterReceiver(receiver);
        receiver = null;
        super.onTerminate();
    }

    /**
     * WIFI广播接收者
     * 
     * @author Administrator
     */
    class MyReciver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            /**
             * wifi打开或者关闭的广播。当应用第一次打开的时候会接收到该广播
             */
            // if (intent.getAction()
            // .equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
            // int stat = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, -1);
            //
            // switch (stat) {
            //
            // case WifiManager.WIFI_STATE_ENABLED:
            // Log.e("", "已近打开");
            //
            // GetNetWorkInfo();
            //
            // break;
            //
            // case WifiManager.WIFI_STATE_DISABLED:
            // Log.e("", "已近关闭");
            // break;
            // }
            // }
            /**
             * 当网络断开或者链接的时候回接收到该广播
             */
            if (intent.getAction().equals(
                    WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
                /**
                 * indicating that the state of Wi-Fi connectivity has changed.
                 * One extra provides the new state in the form of a NetworkInfo
                 * object. If the new state is CONNECTED, additional extras may
                 * provide the BSSID and WifiInfo of the access point. as a
                 * String.
                 */
                // 如果新的状态是Connected,那么返回的信息回包含额外的一些信息,比如Bssid,Wifiinfo
                NetworkInfo info = intent
                        .getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
                Log.e("info.isConnected()", info.isConnected() + "");
                if (info.isConnected()) {
                    if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
                        Toast.makeText(AppApplication.this, "您正在使用移动网络", 0)
                                .show();
                    } else if (info.getType() == ConnectivityManager.TYPE_WIFI) {
                        isNetWorkConnected = true;

                        /**
                         * requestRouteToHost 判断一个网络是否可以连接到一个指定的网络
                         * isActiveNetworkMetered 判断网络是否计费 isNetworkTypeValid
                         * 网络是否有效
                         */
                    }
                } else {
                    isNetWorkConnected = false;
                }

            }
        }

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值