安卓各版本的 Captive Portal 检测参数变化
参数变迁总览
| 安卓版本 | 关键参数 | 备注 |
|---|---|---|
| 5.0 – 6.0.1(Lollipop / Marshmallow) | captive_portal_server | 只有一个服务器地址参数,HTTP 探测 |
| 7.0 – 7.1(Nougat) | captive_portal_http_url + captive_portal_https_url | 新增 HTTPS 探测,参数名从 server 改为 url |
| 8.0 – 10(Oreo 到 Q) | 同上 + captive_portal_mode + captive_portal_use_https | 增加模式开关和 HTTPS 开关 |
| 11 及以上 | 同 8.0+,行为更完善 | 支持 DHCP option 114 等新协议 |
各版本 ADB 命令对照
如果你想手动用 ADB 修改,命令随版本不同:
Android 5.0 – 6.0.1
adb shell settings put global captive_portal_server connect.rom.miui.com
这两个版本没有单独的 HTTP_URL / HTTPS_URL 参数,改 captive_portal_server 就够了。
Android 7.0 及以上
adb shell settings put global captive_portal_http_url http://connect.rom.miui.com/generate_204
adb shell settings put global captive_portal_https_url https://connect.rom.miui.com/generate_204
两个 URL 都要设。只设一个可能导致系统仍然挂感叹号——因为它会同时跑 HTTP 和 HTTPS 两次探测,任一次失败都算失败。
全版本通用的关闭检测
adb shell settings put global captive_portal_detection_enabled 0
设成 0 就是彻底停用整套机制。设成 1 恢复。
为什么 CaptiveMgr 能一个工具通吃
你不需要关心自己设备上的参数名是什么版本——CaptiveMgr 在运行时会自动检测当前设备的系统版本,对应写入正确的参数。工具内部走的也是同一套 settings global 操作,只是帮你省了查文档和敲 adb 的功夫。
CaptiveMgr 与版本的关系
工具本身最低支持 Android 5.0,也正是 Captive Portal 检测机制开始内建的版本。5.0 以下的安卓根本没有这套检测,自然也没感叹号可清。
相关页面
关于参数值具体填什么服务器地址,参见「备选服务器清单」。关于 CaptiveMgr 手动 ADB 命令的对比,参见「与 ADB 命令方案对比」。