Android 监听WiFi的开关状态实现代码

发布时间 - 2026-01-11 01:08:04    点击率:

Android 监听WiFi的开关状态实现代码

WifiSwitch_Presenter 源码:

package com.yiba.wifi.sdk.lib.presenter;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.WifiManager;

/**
 * Created by ${zhaoyanjun} on 2017/3/29.
 * Wifi 开关监听
 */

public class WifiSwitch_Presenter {
  private Context mContext ;
  private Receiver receiver ;
  private WifiSwitch_Interface mInterface ;


  public WifiSwitch_Presenter( Context context , WifiSwitch_Interface mInterface ){
    this.mContext = context ;
    this.mInterface = mInterface ;

    observeWifiSwitch();
  }

  private void observeWifiSwitch(){
    IntentFilter filter = new IntentFilter();
    filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
    receiver = new Receiver() ;
    mContext.registerReceiver(receiver, filter);
  }

  /**
   * 释放资源
   */
  public void onDestroy(){
    if ( receiver != null ){
      mContext.unregisterReceiver( receiver );
    }
    if (mContext!=null){
      mContext = null;
    }
  }

  class Receiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
      int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
      switch (wifiState) {
        case WifiManager.WIFI_STATE_DISABLED:
          if (mInterface != null){
            mInterface.wifiSwitchState(WifiSwitch_Interface.WIFI_STATE_DISABLED);
          }
          break;
        case WifiManager.WIFI_STATE_DISABLING:
          if (mInterface != null){
            mInterface.wifiSwitchState(WifiSwitch_Interface.WIFI_STATE_DISABLING);
          }
          break;
        case WifiManager.WIFI_STATE_ENABLED:
          if (mInterface != null){
            mInterface.wifiSwitchState(WifiSwitch_Interface.WIFI_STATE_ENABLED);
          }
          break;
        case WifiManager.WIFI_STATE_ENABLING:
          if ( mInterface != null ) {
            mInterface.wifiSwitchState(WifiSwitch_Interface.WIFI_STATE_ENABLING);
          }
          break;
        case WifiManager.WIFI_STATE_UNKNOWN:
          if ( mInterface != null ){
            mInterface.wifiSwitchState( WifiSwitch_Interface.WIFI_STATE_UNKNOWN );
          }
          break;
      }
    }
  }
}

WifiSwitch_Interface 源码

package com.yiba.wifi.sdk.lib.presenter;

/**
 * Created by ${zhaoyanjun} on 2017/3/29.
 * Wifi 开关监听
 */

public interface WifiSwitch_Interface {

  int WIFI_STATE_ENABLING = 0 ;
  int WIFI_STATE_ENABLED = 1 ;
  int WIFI_STATE_DISABLING = 2 ;
  int WIFI_STATE_DISABLED = 3 ;
  int WIFI_STATE_UNKNOWN = 4 ;

  void wifiSwitchState( int state );
}

使用方式 MainActivity :

package com.yiba.core;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements WifiSwitch_Interface {

  private WifiSwitch_Presenter wifiSwitch_presenter ;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    wifiSwitch_presenter = new WifiSwitch_Presenter( this , this ) ;

  }

  @Override
  public void wifiSwitchState(int state) {
    switch ( state ){
      case WifiSwitch_Interface.WIFI_STATE_DISABLED :
        Toast.makeText(this, "WiFi 已经关闭", Toast.LENGTH_SHORT).show();
        break;
      case WifiSwitch_Interface.WIFI_STATE_DISABLING:
        Toast.makeText(this, "WiFi 正在关闭", Toast.LENGTH_SHORT).show();
        break;
      case WifiSwitch_Interface.WIFI_STATE_ENABLED :
        Toast.makeText(this, "WiFi 已经打开", Toast.LENGTH_SHORT).show();
        break;
      case WifiSwitch_Interface.WIFI_STATE_ENABLING :
        Toast.makeText(this, "WiFi 正在打开", Toast.LENGTH_SHORT).show();
        break;
    }
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();

    //释放资源
    if ( wifiSwitch_presenter != null ){
      wifiSwitch_presenter.onDestroy();
    }
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # 监听  # WiFi  # 开关状态  # 监听WIFI  # Android 判断屏幕开关状态方式总结  # Android开发之ToggleButton实现开关效果示例  # Android控件ToggleButton多状态按钮使用详解  # Android ToggleButton 详解及实例代码  # android基本控件ToggleButton&Switch使用指南  # Android控件之ToggleButton的使用方法  # Android中ToggleButton开关状态按钮控件使用方法详解  # 希望能  # 谢谢大家 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python图片处理进阶教程_Pillow滤镜与图像增强  Android仿QQ列表左滑删除操作  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  公司网站制作需要多少钱,找人做公司网站需要多少钱?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何快速生成高效建站系统源代码?  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  Python面向对象测试方法_mock解析【教程】  如何构建满足综合性能需求的优质建站方案?  如何用IIS7快速搭建并优化网站站点?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何在云主机上快速搭建多站点网站?  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Laravel怎么实现验证码(Captcha)功能  做企业网站制作流程,企业网站制作基本流程有哪些?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  Swift中循环语句中的转移语句 break 和 continue  Laravel观察者模式如何使用_Laravel Model Observer配置  如何在IIS中配置站点IP、端口及主机头?  装修招标网站设计制作流程,装修招标流程?  Laravel如何使用Collections进行数据处理?(实用方法示例)  如何快速完成中国万网建站详细流程?  jQuery 常见小例汇总  免费网站制作appp,免费制作app哪个平台好?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  js代码实现下拉菜单【推荐】  Laravel Fortify是什么,和Jetstream有什么关系  如何正确选择百度移动适配建站域名?  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  香港服务器WordPress建站指南:SEO优化与高效部署策略  桂林网站制作公司有哪些,桂林马拉松怎么报名?  Laravel如何使用查询构建器?(Query Builder高级用法)  如何用PHP工具快速搭建高效网站?  个人网站制作流程图片大全,个人网站如何注销?  如何用低价快速搭建高质量网站?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  Laravel如何实现本地化和多语言支持?(i18n教程)  如何在云虚拟主机上快速搭建个人网站?  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  如何用好域名打造高点击率的自主建站?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  在线教育网站制作平台,山西立德教育官网?