前言
当 Android 设备连接到 WiFi 网络时,系统会进行“网络连通性检测”(captive portal detection),通过向特定 URL 发送 HTTP 请求并检查返回的状态码来判断是否能够正常访问互联网。如果检测失败,系统会在 WiFi 图标上叠加感叹号或叉号,影响使用体验。本文介绍如何自定义或关闭该检测,移除网络图标上的感叹号/叉号。
什么是 generate_204
generate_204 是 HTTP Status Code 204 No Content 的空白响应代码服务接口,用于检测网络连通性。当设备向此接口发送请求并收到 204 状态码时,判定网络可用;否则认为需要登录或网络不可用。
公共 generate_204 服务接口列表
下表列出了常见厂商和服务提供商的 generate_204 接口(以及部分非 204 返回的测试接口):
说明:表中 Google 相关多个域名接口仅列出常见示例,实际厂商和服务域名更多。
使用方法
建议根据设备所在地选择延迟最低、支持 HTTP/HTTPS 双协议栈、且返回 204 状态码的接口;部分 Android 版本对协议栈或状态码有严格要求。
- Android 6.x 及以下
bash
adb shell "settings put global captive_portal_server connect.rom.miui.com"- Android 7.x 及以上(需分别设置 HTTP/HTTPS)
bash
adb shell settings put global captive_portal_http_url http://connect.rom.miui.com/generate_204bash
adb shell settings put global captive_portal_https_url https://connect.rom.miui.com/generate_204- 禁用网络连通性检测(移除感叹号/叉号)
bash
adb shell settings put global captive_portal_detection_enabled 0- 启用网络连通性检测
bash
adb shell settings put global captive_portal_detection_enabled 1- (可选)设置 NTP 校时服务器地址
bash
adb shell settings put global ntp_server ntp.ntsc.ac.cn- 查看所有可配置项
bash
adb shell settings list globalbash
adb shell getprop注意:禁用检测后,WiFi 图标不再显示感叹号/叉号,但无法自动发现需要登录的门户页面。
参考资料
- Android Captive Portal 原理与设置详解:https://www.noisyfox.io/android-captive-portal.html


