Android 监听设备打开WiFi开关的5中状态和是否已连接WiFi成功的广播

导读:本篇文章讲解 Android 监听设备打开WiFi开关的5中状态和是否已连接WiFi成功的广播,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Android中WLAN的广播监听的是WLAN状态的改变 ,Action是WifiManager.WIFI_STATE_CHANGED_ACTION,WLAN的状态系统定义了5种,分别是:

WIFI_STATE_DISABLED WLAN已经关闭

WIFI_STATE_DISABLING WLAN正在关闭

WIFI_STATE_ENABLED  

WLAN已经打开WIFI_STATE_ENABLING  

WLAN正在打开WIFI_STATE_UNKNOWN 未知

一、监听设备打开WiFi开关的5中状态

1. 监听WiFi开关状态的广播创建一个类 WLANListener

public class WLANListener {
   private Context mContext;
   private WLANBroadcastReceiver receiver;
   private WLANStateListener mWLANStateListener;
   //构造方法中实例化一个监听广播
   public WLANListener(Context context) {
       mContext = context;
       receiver = new WLANBroadcastReceiver();
   }

  //调用此方法来开启监听广播
   public void register(WLANStateListener listener) {
       mWLANStateListener = listener;
       if (receiver != null) {
           IntentFilter filter = new IntentFilter();
           filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
           mContext.registerReceiver(receiver, filter);
       }
   }

//调用此方法来关闭监听广播
   public void unregister() {
       if (receiver != null) {
           mContext.unregisterReceiver(receiver);
       }
   }

//监听广播内部类
   private class WLANBroadcastReceiver extends BroadcastReceiver {

       @Override
       public void onReceive(Context context, Intent intent) {
           if (intent != null) {
               String action = intent.getAction();
               /** wifi状态改变 */
               if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
                   if (mWLANStateListener != null) {
                       Log.e(“zhang”, “WLANBroadcastReceiver –> onReceive–> WIFI_STATE_CHANGED_ACTION”);
                       mWLANStateListener.onStateChanged();
                   }
               }
               /**
                * WIFI_STATE_DISABLED    WLAN已经关闭
                * WIFI_STATE_DISABLING   WLAN正在关闭
                * WIFI_STATE_ENABLED     WLAN已经打开
                * WIFI_STATE_ENABLING    WLAN正在打开
                * WIFI_STATE_UNKNOWN     未知
                */
               int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
               switch (state) {
                   case WifiManager.WIFI_STATE_DISABLED:
                       if (mWLANStateListener != null) {
                           Log.e(“zhang”, “WLANBroadcastReceiver –> onReceive–> WIFI_STATE_DISABLED”);
                           mWLANStateListener.onStateDisabled();
                       }
                       break;
                   case WifiManager.WIFI_STATE_DISABLING:
                       if (mWLANStateListener != null) {
                           Log.e(“zhang”, “WLANBroadcastReceiver –> onReceive–> WIFI_STATE_DISABLING”);
                           mWLANStateListener.onStateDisabling();
                       }
                       break;
                   case WifiManager.WIFI_STATE_ENABLED:
                       if (mWLANStateListener != null) {
                           Log.e(“zhang”, “WLANBroadcastReceiver –> onReceive–> WIFI_STATE_ENABLED”);
                           mWLANStateListener.onStateEnabled();
                       }
                       break;
                   case WifiManager.WIFI_STATE_ENABLING:
                       if (mWLANStateListener != null) {
                           Log.e(“zhang”, “WLANBroadcastReceiver –> onReceive–> WIFI_STATE_ENABLING”);
                           mWLANStateListener.onStateEnabling();
                       }
                       break;
                   case WifiManager.WIFI_STATE_UNKNOWN:
                       if (mWLANStateListener != null) {
                           Log.e(“zhang”, “WLANBroadcastReceiver –> onReceive–> WIFI_STATE_UNKNOWN”);
                           mWLANStateListener.onStateUnknow();
                       }
                       break;
               }
           }
       }
   }
//WiFi开关5中状态接口
   public interface WLANStateListener {
       void onStateChanged();
       void onStateDisabled();
       void onStateDisabling();
       void onStateEnabled();
       void onStateEnabling();
       void onStateUnknow();
   }
}

2.在Activity中调用方法

private WLANListener Wifilistener;

  /**
     * 开始监听WiFi开关状态
     * */
    public void startWifi(){
Wifilistener = new WLANListener(this);
Wifilistener.register(new WLANStateListener() {

@Override
public void onStateUnknow() {//未知

}

@Override
public void onStateEnabling() {//正在打开WiFi开关

}

@Override
public void onStateEnabled() { //已经打开WiFi开关

}

@Override
public void onStateDisabling() {//WLAN正在关闭


}

@Override
public void onStateDisabled() {//WLAN已经关闭


}

@Override
public void onStateChanged() {//WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)判断监 //听Action是否是WIFI_STATE_CHANGED_ACTION


}
});

}

二、监听设备是否已经连接上WIFI

private WifiReceiver receiver

private class WifiReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {// wifi连接上与否
Log.e(“+++网络状态改变+++”, “网络状态改变”);
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info.getState().equals(NetworkInfo.State.CONNECTED)) {
//连接WiFi成功
}
}
}
}

//开启广播调用方法

private void initReceiver() {
receiver = new WifiReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
registerReceiver(receiver, filter);
}

//关闭广播

unregisterReceiver(receiver);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119235.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!