安卓工控屏静默连WiFi全攻略

这里写自定义目录标题

安卓工控屏/静默连接wifi的问题

飞凌嵌入式3568

系统版本:Android 11

API 等级:30

屏幕分辨率:1280×800

屏幕密度:160 dpi

在工控 / 系统应用(android.uid.system)里,用户选热点、输密码后直接连 Wi‑Fi,尽量不要走会弹系统确认框的那套 API(例如 WifiNetworkSpecifier + requestNetwork)。

Android11的系统,如果直接使用Android 的wifi连接api,会有弹窗的提示,连接wifi的用户体验不好

整体架构:两条路径,先后尝试

优先:WpaCliWifiConnector

在应用进程里直接执行 wpa_cli,对 wpa_supplicant 发 add_network、set_network、enable、reconnect 等命令,理论上可以完全绕过框架弹窗。

在你们这台机器上,SELinux 禁止应用进程连接 wpa 的控制套接字,所以日志里一直是 Permission denied,这条路径实际不可用。

回退:WifiManagerDirectConnector(真正救活连接的部分)

当 wpa_cli 全部失败时,改用 WifiManager 的 Binder 接口:

组 WifiConfiguration(开放 / WPA2‑PSK / 按扫描能力选 SAE)

getConfiguredNetworks 里若已有同 SSID 则 updateNetwork,否则 addNetwork

disconnect → enableNetwork(netId, true) → reconnect

在后台线程里轮询 getConnectionInfo(),直到 SupplicantState.COMPLETED

和你们之前「只靠 SSID 字符串判断」相比,关键点是:用 WifiInfo.getNetworkId() 和 addNetwork 返回的 netId 对齐 来判断是否连上,避免 Android 10+ 上 getSSID() 经常是 导致误判超时。

清单与权限

在 AndroidManifest.xml 里为 Android 10+ 显式加了 OVERRIDE_WIFI_CONFIG(配合系统签名 / sharedUserId),让 addNetwork /读写已保存网络更可靠;再配合原有的 CHANGE_WIFI_STATE、ACCESS_FINE_LOCATION 等。

调用关系

WifiConnectionController.connect() 在后台线程里:先 WpaCliWifiConnector.connect,失败再 WifiManagerDirectConnector.connect,最后在主线程回调成功或失败。调试时用 adb logcat -s WpaCliWifi WifiMgrWifi 可同时看到两条路径。

一句话

wpa_cli 被策略挡死后,靠系统应用特权走 WifiManager 配置并启用网络,并用 networkId + 关联完成状态 判断是否连上,从而在不依赖 wpa 套接字、也不走弹窗式 Specifier 的前提下完成连接。

相关推荐
Starry-sky(jing)5 小时前
Vidda ADB 开启:R Pro 65 找不到开发者选项的处理与连接验收
android·adb·远程控制·电视·vidda
雨白5 小时前
从原理到实践:使用 Kotlin KSP 仿写 ButterKnifeLite
android·kotlin
疯华整猫6 小时前
把二十七个 init 从首帧前面搬走:用 Trae 把启动优化钉进 CI
android·性能优化·ai编程
传奇开心果7 小时前
【探秘 Jetpack Compose 框架深水区】 第8课:rememberSaveable 的边界在哪里?——Bundle、Saver 与什么值得跨进程存活
android·kotlin
Frankie_stand8 小时前
测试自动化实战指南:从脚本化、自动判据到 CI 集成的完整落地路径
android·ci/cd·自动化
恋猫de小郭9 小时前
Flutter 大小核优化又被回滚,然后又开新提案?
android·前端·flutter
Kapaseker9 小时前
领导问我 Kotlin 的 Nothing 是什么?
android·kotlin
韩曙亮10 小时前
【错误记录】安卓 adb 调试 5037 端口占用排查 ( adb 的三层结构 | 找出本机占用 5037 的进程 )
android·数据库·adb·安卓·错误记录
三少爷的鞋11 小时前
不改变异步本质,只改变代码组织:Telegram 项目的 Kotlin 协程实践
android
好的佩奇20 小时前
蓝牙之广播与扫描
android·flutter·蓝牙