前言
Android端通过广播的形式动态监测Wi-Fi状态以及便携式热点开关状态,其中获取Wi-Fi状态很简单,网上很多示例,但是通过广播获取热点开关状态相关的资料少之又少,不过好在一个国外网站找到了解决办法,在此分享给大家。
正文
直接看代码
package com.tl.test;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import workInfo;import .wifi.WifiInfo;import .wifi.WifiManager;/*** 该类是用于实时监测WiFi状态以及热点开关变化*/public class WifiReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if(action.equals(WifiManager.RSSI_CHANGED_ACTION)){//signal strength changed}else if(action.equals(WORK_STATE_CHANGED_ACTION)){//wifi连接上与否System.out.println("网络状态改变");NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);if(info.getState().equals(NetworkInfo.State.DISCONNECTED)){System.out.println("wifi网络连接断开");}else if(info.getState().equals(NetworkInfo.State.CONNECTED)){WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);WifiInfo wifiInfo = wifiManager.getConnectionInfo();//获取当前wifi名称System.out.println("连接到网络 " + wifiInfo.getSSID());}}else if(".wifi.WIFI_AP_STATE_CHANGED".equals(action)){//便携式热点的状态为:10---正在关闭;11---已关闭;12---正在开启;13---已开启int state = intent.getIntExtra("wifi_state", 0);System.out.println("热点开关状态:state= "+String.valueOf(state));if(state == 13){System.out.println("热点已开启");}else if(state == 11){System.out.println("热点已关闭");}else if(state == 10){System.out.println("热点正在关闭");}else if(state == 12){System.out.println("热点正在开启");}}else if(action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)){//wifi打开与否int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED);if(wifistate == WifiManager.WIFI_STATE_DISABLED){System.out.println("系统关闭wifi");}else if(wifistate == WifiManager.WIFI_STATE_ENABLED){System.out.println("系统开启wifi");}}}}
最后,注册广播,这里我选用静态注册的方式,在AndroidManifest.xml中添加
<!--静态注册广播 --><receiver android:name=".WifiReceiver" android:enabled="true" android:exported="true"><intent-filter><action android:name=".wifi.RSSI_CHANGED"/><action android:name=".wifi.STATE_CHANGE"/><action android:name=".wifi.WIFI_STATE_CHANGED"/></intent-filter></receiver>
(以上代码均来自网络,由我整理发布)
如果觉得《Android通过广播监测Wi-Fi和便携式热点开关状态》对你有帮助,请点赞、收藏,并留下你的观点哦!