Android通过广播监测Wi-Fi和便携式热点开关状态
2017-06-23 16:00
363 查看
前言
Android端通过广播的形式动态监测Wi-Fi状态以及便携式热点开关状态,其中获取Wi-Fi状态很简单,网上很多示例,但是通过广播获取热点开关状态相关的资料少之又少,不过好在一个国外网站找到了解决办法,在此分享给大家。正文
直接看代码package com.tl.test; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.NetworkInfo; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; /** * 该类是用于实时监测WiFi状态以及热点开关变化 */ public class WifiReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals(WifiManager.RSSI_CHANGED_ACTION)){ //signal strength changed } else if(action.equals(WifiManager.NETWORK_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("android.net.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="android.NET.wifi.RSSI_CHANGED"/> <action android:name="android.net.wifi.STATE_CHANGE"/> <action android:name="android.Net.wifi.WIFI_STATE_CHANGED"/> </intent-filter> </receiver>
(以上代码均来自网络,由我整理发布)
相关文章推荐
- Android 获取便携式wifi热点开关状态、热点开启与关闭
- 通过Wi-Fi调试Android应用
- Android 通过 JNI 获取 Wi-Fi 网络接口名
- Android之监测手机网络状态的广播
- Android之监测手机网络状态的广播
- Android便携式热点的开启状态检测和SSID的获取方法
- 在Android 8.0(API第26级)和更高版本的设备上,您可以在试图通过蓝牙、BLE和wi - fi对其他设备进行配对时定制配对请求对话框
- Qt for Android获取手机热点开关状态
- Android 通过WIFI状态监听广播,判断进入指定wifi范围
- Android - 创建Wi-Fi热点、连接Wi-Fi
- Android通过使用系统广播监听网络状态的改变
- 笔记本无线网卡变身热点供手机Wi-Fi免费通过宽带上网
- Android wifi状态三种广播,可以监测wifi状态变化
- Android 通过广播监听USB连接状态的改变
- HNS物联网僵尸网络现在通过Wi-Fi使用ADB传播到新的Android设备
- Android Wi-Fi 状态机状态图
- Android入门——多线程的使用之实时监测查看Wi-Fi信息及Wi-Fi相关的操作总结
- Android 通过注册广播,实时监听网络连接与断开状态的变化
- Android之监测手机网络状态的广播
- Android之监测手机网络状态的广播