Hide Tia Switch Save

类原生 Android 去除 WiFi 网络感叹号/叉号

前言

当 Android 设备连接到 WiFi 网络时,系统会进行“网络连通性检测”(captive portal detection),通过向特定 URL 发送 HTTP 请求并检查返回的状态码来判断是否能够正常访问互联网。如果检测失败,系统会在 WiFi 图标上叠加感叹号或叉号,影响使用体验。本文介绍如何自定义或关闭该检测,移除网络图标上的感叹号/叉号。

什么是 generate_204

generate_204 是 HTTP Status Code 204 No Content 的空白响应代码服务接口,用于检测网络连通性。当设备向此接口发送请求并收到 204 状态码时,判定网络可用;否则认为需要登录或网络不可用。

公共 generate_204 服务接口列表

下表列出了常见厂商和服务提供商的 generate_204 接口(以及部分非 204 返回的测试接口):

服务提供商链接HTTP/HTTPSIP Version
华为http://connectivitycheck.platform.hicloud.com/generate_204204 / 204IPv4
荣耀http://connectivitycheck.platform.hihonorcloud.com/generate_204204 / 204IPv4 & IPv6
小米http://connect.rom.miui.com/generate_204204 / 204IPv4
Cloudflarehttps://cp.cloudflare.com/generate_204204 / 204IPv4 & IPv6
Firefoxhttp://detectportal.firefox.com/success.txt200 / 200IPv4 & IPv6
Googlehttps://clients1.google.com/generate_204204 / 204IPv4 & IPv6
Googlehttps://clients2.google.com/generate_204204 / 204IPv4 & IPv6
Googlehttps://googleapis.com/generate_204204 / 204IPv4 & IPv6
Googlehttps://goo.gl/generate_204204 / 204IPv4 & IPv6
Googlehttp://google.cn/generate_204204 / 204IPv4 & IPv6
Googlehttp://google.com.hk/generate_204204 / 204IPv4 & IPv6
Googlehttp://google.com.tw/generate_204204 / 204IPv4 & IPv6
Googlehttp://google.com/generate_204204 / 204IPv4 & IPv6
Googlehttp://www.gstatic.com/generate_204204 / 204IPv4 & IPv6
Googlehttp://www.youtube.com/generate_204204 / 204IPv4 & IPv6
Googlehttp://yt.be/generate_204204 / 204IPv4 & IPv6
Microsofthttp://www.msftconnecttest.com/connecttest.txt200 / errIPv4
OPPOhttp://conn1.oppomobile.com/generate_204204 / 204IPv4 & IPv6
OPPOhttp://conn2.oppomobile.com/generate_204204 / 204IPv4 & IPv6
Qualcommhttp://www.qualcomm.cn/generate_204204 / 204IPv4 & IPv6
vivohttp://wifi.vivo.com.cn/generate_204204 / 204IPv4

说明:表中 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_204
bash
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 global
bash
adb shell getprop

注意:禁用检测后,WiFi 图标不再显示感叹号/叉号,但无法自动发现需要登录的门户页面。

参考资料

  1. Android Captive Portal 原理与设置详解:https://www.noisyfox.io/android-captive-portal.html
GitHub Release 自动上传脚本