TaifunWiFi 拓展:WiFi Manager WiFi管理器扩展
在无线局域网中使用的功能块。
- .aix 拓展下载:
com.puravidaapps.TaifunWiFi.aix
- demo程序下载:
开发动机
WiFi Manager扩展为App Inventor开发者提供了完整的WiFi网络管理功能,包括WiFi状态控制、网络扫描、连接管理和详细信息查询。该扩展经过多年发展,支持从基础WiFi操作到高级网络建议API的各种功能。
功能概述
WiFi Manager扩展提供以下核心功能:
- WiFi状态控制(启用/禁用WiFi)
- 网络信息查询(SSID、BSSID、IP地址等)
- 可用网络扫描
- 网络连接管理
- 信号强度检测
- 5GHz频段支持检测
- DNS服务器查询
- 位置权限管理
- 网络建议API支持
扩展截图



属性
- SuppressSuccessMessage 抑制成功消息
- 获取或设置是否抑制成功消息显示。当设置为true时,将不显示操作成功的提示消息。
方法
- GetSuppressSuccessMessage 获取抑制成功消息()
- 返回是否抑制成功消息的设置状态。
- SetSuppressSuccessMessage 设置抑制成功消息(抑制)
- 设置是否抑制成功消息显示。true为抑制,false为显示。
- LocalIP 本地IP地址()
- 返回本地IP地址。如果WiFi启用则返回WiFi IP,否则返回蜂窝网络IP。
- IsEnabled 是否启用()
- 获取当前WiFi状态:true为启用,false为禁用。
- Enable 启用WiFi()
- 启用WiFi。可以通过设置suppressSuccessMessage属性为false来隐藏成功消息。
注意:从Android 10开始,无法以编程方式启用WiFi,因此将为用户提供对话框。 - Disable 禁用WiFi()
- 禁用WiFi。可以通过设置suppressSuccessMessage属性为false来隐藏成功消息。
注意:从Android 10开始,无法以编程方式禁用WiFi,因此将为用户提供对话框。 - SSID 服务集标识符()
- 获取当前WiFi SSID(服务集标识符)。
注意:使用此方法的前提是授予位置权限并且GPS必须启用。 - BSSID 基本服务集标识符()
- 获取当前WiFi BSSID(接入点的MAC地址)。
注意:使用此方法的前提是授予位置权限并且GPS必须启用。 - AvailableSSIDs 可用网络列表()
- 获取可用SSID(服务集标识符)列表。WiFi必须启用才能使用此功能。
注意:使用此方法的前提是授予位置权限并且GPS必须启用。
重要:Android将变得越来越受限。在未来的Android版本中,AvailableSSIDs方法将停止工作。 - ConnectionInfo 连接信息()
- 获取当前连接信息。详情请参考Android WiFiInfo文档。
- Is5GHzBandSupported 支持5GHz频段()
- 检查是否支持5GHz频段。返回true或false。
- SignalStrength 信号强度()
- 获取信号强度(RSSI),范围在0到100之间。
- AccessPointIP 接入点IP()
- 获取接入点的IP地址。
- Dnsservers DNS服务器()
- 返回当前网络的DNS服务器列表(主服务器和辅助服务器)。
注意:当路由器内未配置DNS时,方法返回网关路由器的IP地址。 - ApiLevel API级别()
- 返回当前设备的Android API级别。

- ConnectSSID 连接网络(SSID,密码)
- 连接到指定的SSID(服务集标识符)。适用于Android >= 10。
使用新的点对点API来引导配置辅助设备,该API从Android 10开始可用。此API需要WRITE_SETTINGS权限。 - DisconnectSSID 断开连接()
- 断开当前WiFi连接。
- HaveSystemWritePermission 拥有系统写入权限()
- 检查应用是否拥有系统写入权限。
- IsGpsEnabled GPS是否启用()
- 检查设备GPS是否启用。
- IsLocationPermissionGranted 位置权限是否授予()
- 检查应用是否被授予位置权限。
- RequestLocationPermission 请求位置权限()
- 请求位置权限。
- AddNetworkSuggestion 添加网络建议(SSID,密码)
- 添加网络建议(Network Suggestion API)。
- RemoveNetworkSuggestion 移除网络建议(SSID)
- 移除网络建议。
- GetAllNetworkSuggestions 获取所有网络建议()
- 获取所有网络建议。
- SecurityType 安全类型()
- 获取当前连接网络的安全类型。
- NetworkAvailable 网络可用()
- 检查网络是否可用。
事件
- GotAvailableSSIDs 获取可用网络(可用网络列表,最佳网络,对应信号强度,对应BSSID列表)
- 指示已扫描到可用SSID(服务集标识符)的事件。
参数提供:- availableSSIDs:可用SSID列表
- bestSSID:信号最好的SSID
- correspondingRSSI:对应的信号强度列表
- correspondingBSSI:对应的BSSID列表
- AfterWifiNegotiation WiFi协商完成(SSID,成功)
- WiFi连接协商完成时触发。
- ErrorOccurred 错误发生(错误信息)
- 当操作发生错误时触发,替换了之前的suppressWarning属性。

使用示例
基本WiFi状态检查
// 检查WiFi状态
when Screen1.Initialize
do
if WiFi1.IsEnabled then
set Label1.Text to "WiFi已启用"
set Label2.Text to "当前IP: " & WiFi1.LocalIP
set Label3.Text to "当前SSID: " & WiFi1.SSID
else
set Label1.Text to "WiFi已禁用"
扫描可用网络
// 扫描可用WiFi网络
when Button_Scan.Click
do
// 首先检查位置权限
if not WiFi1.IsLocationPermissionGranted then
call WiFi1.RequestLocationPermission
else if not WiFi1.IsGpsEnabled then
show notification "请启用GPS以扫描WiFi网络"
else if WiFi1.IsEnabled then
call WiFi1.AvailableSSIDs
else
show notification "请先启用WiFi"
// 处理扫描结果
when WiFi1.GotAvailableSSIDs availableSSIDs, bestSSID, correspondingRSSI, correspondingBSSIs
do
// 清空列表
call ListView1.Clear
// 添加网络到列表
for each ssid in availableSSIDs
call ListView1.Elements append ssid
// 显示最佳网络
set Label_BestNetwork.Text to "最佳信号网络: " & bestSSID
连接到WiFi网络
// 连接到指定WiFi网络
when Button_Connect.Click
do
set SSID to TextBox_SSID.Text
set Password to TextBox_Password.Text
// 检查WiFi状态
if not WiFi1.IsEnabled then
call WiFi1.Enable
wait 3000 // 等待WiFi启用
// 尝试连接
call WiFi1.ConnectSSID SSID, Password
// 处理连接结果
when WiFi1.AfterWifiNegotiation ssid, success
do
if success then
show notification "已成功连接到: " & ssid
set Label_Status.Text to "已连接: " & ssid
else
show notification "连接失败: " & ssid
获取网络详细信息
// 获取详细网络信息
when Button_GetInfo.Click
do
if WiFi1.IsEnabled then
set InfoList to empty list
// 基本信息
call InfoList append "SSID: " & WiFi1.SSID
call InfoList append "BSSID: " & WiFi1.BSSID
call InfoList append "本地IP: " & WiFi1.LocalIP
call InfoList append "接入点IP: " & WiFi1.AccessPointIP
// 信号和频段信息
call InfoList append "信号强度: " & WiFi1.SignalStrength & "%"
call InfoList append "5GHz支持: " & if WiFi1.Is5GHzBandSupported then "是" else "否"
// 安全信息
call InfoList append "安全类型: " & WiFi1.SecurityType
// DNS信息
set DNSList to WiFi1.Dnsservers
call InfoList append "DNS服务器: " & join with separator DNSList, ", "
// 连接信息
call InfoList append "连接详情: " & WiFi1.ConnectionInfo
// 系统信息
call InfoList append "Android API: " & WiFi1.ApiLevel
call InfoList append "位置权限: " & if WiFi1.IsLocationPermissionGranted then "已授予" else "未授予"
call InfoList append "GPS状态: " & if WiFi1.IsGpsEnabled then "已启用" else "未启用"
// 显示信息
set Label_Info.Text to join with separator InfoList, "\n"
else
show notification "WiFi未启用"
错误处理
// 处理WiFi错误
when WiFi1.ErrorOccurred errorMessage
do
show notification "WiFi错误: " & errorMessage
// 记录错误日志
call ErrorLog append "WiFi错误: " & errorMessage
// 根据错误类型提供解决建议
if contains errorMessage "permission" then
show notification "请检查应用权限设置"
else if contains errorMessage "GPS" then
show notification "请启用GPS功能"
else if contains errorMessage "location" then
show notification "请授予位置权限"
应用场景
1. 网络管理应用
创建完整的WiFi管理工具,帮助用户查看、连接和管理WiFi网络:
// 网络管理主界面
when Screen1.Initialize
do
call InitializeNetworkManager
// 定期更新网络状态
when Clock1.Timer
do
call UpdateNetworkStatus
2. 智能家居控制
自动连接到家庭WiFi网络并控制智能设备:
// 自动连接家庭网络
when Screen1.Initialize
do
// 尝试连接到预设的家庭网络
call WiFi1.ConnectSSID "HomeNetwork_5G", "password123"
// 连接成功后控制设备
when WiFi1.AfterWifiNegotiation ssid, success
do
if success and ssid = "HomeNetwork_5G" then
call InitializeSmartDevices
3. 网络诊断工具
检查网络连接质量和问题诊断:
// 网络诊断
when Button_Diagnose.Click
do
call RunNetworkDiagnostics
procedure RunNetworkDiagnostics
// 检查WiFi状态
if not WiFi1.IsEnabled then
set DiagnosisResult to "WiFi未启用"
return
// 检查信号强度
set SignalStrength to WiFi1.SignalStrength
if SignalStrength < 30 then
call DiagnosisResult append "信号强度较弱 (" & SignalStrength & "%)\n"
// 检查网络连接
if WiFi1.NetworkAvailable then
call DiagnosisResult append "网络连接正常\n"
else
call DiagnosisResult append "网络连接异常\n"
4. 企业网络管理
企业环境下的网络连接管理和监控:
// 企业网络连接
when Button_ConnectEnterprise.Click
do
// 检查是否为企业网络
if Contains TextBox_SSID.Text, "Company_" then
call WiFi1.ConnectSSID TextBox_SSID.Text, TextBox_Password.Text
// 记录连接日志
call ConnectionLog append "尝试连接企业网络: " & TextBox_SSID.Text
技术说明
权限要求
WiFi扩展需要以下权限:
- ACCESS_WIFI_STATE: 访问WiFi状态
- CHANGE_WIFI_STATE: 修改WiFi状态
- ACCESS_FINE_LOCATION: 精确位置权限(用于网络扫描)
- ACCESS_NETWORK_STATE: 访问网络状态
- WRITE_SETTINGS: 系统设置权限(Android >= 10连接功能)
- ACCESS_COARSE_LOCATION: 粗略位置权限
Android版本兼容性
| Android版本 | 功能支持 | 注意事项 |
|---|---|---|
| < 6.0 | 完整支持 | 无特殊限制 |
| 6.0-9.0 | 基本支持 | 需要动态权限请求 |
| >= 10.0 | 受限支持 | 无法编程启用/禁用WiFi,使用网络建议API |
| >= 11.0 | 严格限制 | 网络扫描功能可能受限 |
网络扫描限制
从Android 9开始,WiFi扫描受到以下限制:
- 每个前台应用可以在2分钟内扫描4次
- 后台应用扫描次数更少
- 需要位置权限和GPS启用
网络建议API(Android >= 10)
对于Android 10及以上版本,使用Network Suggestion API:
- 不再需要系统权限即可建议网络
- 用户可以明确接受或拒绝建议
- 提供更好的用户体验和安全性
最佳实践
- 权限管理: 始终检查并请求必要的权限
- 错误处理: 实现完整的错误处理机制
- 用户反馈: 提供清晰的状态信息和用户指导
- 性能优化: 避免频繁的网络扫描操作
- 版本适配: 根据Android版本提供不同的功能
- 安全性: 妥善处理WiFi密码等敏感信息
故障排除
常见问题
Q: WiFi扫描返回空列表? A: 检查位置权限是否已授予,GPS是否启用,WiFi是否开启。
Q: 无法连接到WiFi网络? A: 确认网络名称和密码正确,检查网络是否在范围内,对于Android >= 10需要使用网络建议API。
Q: 获取SSID失败? A: 确保应用已连接到WiFi,位置权限已授予,GPS已启用。
Q: Enable/Disable方法无效? A: 从Android 10开始,无法编程控制WiFi开关,系统会显示用户对话框。
Q: 网络扫描功能不工作? A: 这可能是由于Android版本限制,新版本Android对网络扫描有严格限制。
本文档基于TaifunWiFi扩展的PuraVidaApps页面信息整理,更多信息请参考原始页面。
扫码添加客服咨询