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配置与使用
在线教育网站制作平台,山西立德教育官网?

