监控WIFI变化我们很有可能会有这样的需求:在WIFI断开或者连接的时候 , 将当前的WIFI数据保存下来
事实上Android中WIFI发生变化的时候 , 会发送广播 , 我们只需要监听系统中发送的WIFI变化的广播就可以实现相关的功能了
开启权限<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
注册监听广播我们先使用动态注册网络状态的监听广播
PS:注册监听有两种方式 , 无论使用哪种注册方式均需要在AndroidMainest清单文件里面进行注册
- 静态注册
也就是说在AndroidManifest文件中对BroadcastReceiver进行注册 , 通常还会加上action用来过滤;此注册方式即使退出应用后 , 仍然能够收到相应的广播
- 动态注册
调用Context中的registerReceiver对广播进行动态注册 , 使用unRegisterReceiver方法对广播进行取消注册的操作;故此注册方式一般都是随着所在的Activity或者应用销毁以后 , 不会再收到该广播动态注册的代码如下
@Overrideprotected void onStart() {super.onStart();IntentFilter filter = new IntentFilter();filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);registerReceiver(NetworkReceiver.getInstance(),filter);}
然后写具体的NetworkReceiver
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkCapabilities;import android.net.NetworkInfo;import android.net.wifi.WifiManager;import android.os.Build;import android.widget.Toast;import static android.net.wifi.WifiManager.WIFI_STATE_DISABLED;import static android.net.wifi.WifiManager.WIFI_STATE_ENABLED;import static android.net.wifi.WifiManager.WIFI_STATE_UNKNOWN;/** * @author panyi * @date 2022/8/23 * 广播接收器 用来监听WIFI的变化 */public class NetworkReceiver extends BroadcastReceiver {private volatile static NetworkReceiver sInstance;public NetworkReceiver(){}public static NetworkReceiver getInstance(){if (sInstance == null) {synchronized (NetworkReceiver.class) {if (sInstance == null) {sInstance = new NetworkReceiver();}}}return sInstance;}// WIFI连接状态改变的监听@Overridepublic void onReceive(Context context, Intent intent) {String action=intent.getAction();if(action==WifiManager.WIFI_STATE_CHANGED_ACTION){switch(intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WIFI_STATE_UNKNOWN)){case WIFI_STATE_ENABLED :// WIFI连接Toast.makeText(context, "WiFi enabled", Toast.LENGTH_SHORT).show();break;case WIFI_STATE_DISABLED:// WIFI断开Toast.makeText(context, "WiFi disabled", Toast.LENGTH_SHORT).show();break;}}}}
继承BroadcastReceiver
广播监听类之后重写onReceive
方法 , 根据监听到的不同内容进行具体需求的修改即可最后 , 随着Android版本的不断迭代 , 上述的方法也许在今后的某个时候就不适用了 , 如果到了这个时候 , 就去官方文档里面去寻找答案吧 https://developer.android.com/docs?hl=zh-cn
参考链接
- Android wifi 设置相关
- Android WIFI 模块解析(1) - 掘金
- Android进阶之路 - WiFi的全面使用 - 掘金
- Android开发--WIFI实现_一叶飘舟的博客-CSDN博客
- WifiManager - Android中文版 - API参考文档
- Android WiFi开发 (一)扫描、连接、信息_VNanyesheshou的博客-CSDN博客_android wifi扫描连接
- Android中wifi管理器WifiManager使用方法_淼森007的博客-CSDN博客_android wifimanager
经验总结扩展阅读
- 随身wifi怎么用的要自己买卡么(随身wifi靠谱吗)
- 随身WiFi是什么意思,怎么用的(随身wifi有什么意义)
- 随身WiFi怎么用(随身wifi怎么交费)
- 随身WiFI是怎么用的(随身wifi激活的步骤)
- 移动随身wifi怎么用(移动wifi多少钱一个月)
- 随身无线网怎么用(随身wifi是不是智商税)
- android安卓手机:[4]如何怎么打开.apk文件
- 29 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取Android7.0以上的Https包-终篇
- 通过netty把百度地图API获取的地理位置从Android端发送到Java服务器端
- Android自动化测试工具调研