连接到Internet时,系统会检查它是否在围墙花园中,而这只是试图连接到Google。如果失败,则在Android 5中,WiFi图标或信号图标上会带有感叹号。

在某些情况下,这很烦人。假设在中国,Google被阻止,感叹号将一直存在,这毫无意义。

如何禁用此检查,并使系统假设已连接的WiFi /移动数据已连接互联网?

#1 楼

这很简单。在终端(需要root用户)或adb shell(不需要root用户)中,发出命令

settings put global captive_portal_detection_enabled 0


并重新启动。应该禁用它。也可以通过命令

settings get global captive_portal_detection_enabled


来验证现有状态。响应为“ null”表示尚未设置全局密钥值,Android将恢复为默认值开启并执行检测。如果禁用了检测,则将收到“ 0”的响应。

更多信息:Android:如何在android 4.2.2和4.3上删除“强制门户”检测

它也可以在5中使用。

评论


大!我注意到该链接在4.2.2和4.3中描述了此操作。您(或其他任何人)是否已验证它也可以在5.0.x中使用?

– Flyto
2015年2月23日在17:03

@SimonW是的,它可以工作。这就是为什么我标记了棒棒糖的问题。我正在使用CyanogenMod 12。

–钱
15年2月24日在2:36

Gery的评论,缺少它的代表:对于那些第一次使用Terminal的用户,不要忘记在执行任何操作之前先输入命令“ su”,以允许超级用户权限。 (花了我一段时间才弄清楚为什么会出现“权限被拒绝”的情况)。此后,它就像是一种魅力。

– Izzy♦
15年7月6日在13:07

从牛轧糖(我想可能只是7.1.2,或者已经是棉花糖)开始,改用设置将global captive_portal_mode 0设置,请参见jira.lineageos.org/browse/REGRESSION-620

– Bonob
17-10-20在11:40

为了编写此设置,您可能必须(Android> = 8?)首先将SELinux设置为宽松。 setenforce 0;设置放..

–schlimmchen
18年2月28日在8:37

#2 楼

在Shamu的Android M开发者预览版(Nexus 6)以及该操作系统的其他版本中,无论captive_portal_server global处于何种状态,操作系统都使用captive_portal_detection_enabled来确定WiFi网络的运行状况。

对于WiFi网络,它不仅会在强度图标上绘制一个感叹号,而且如果没有成功通过SSID在curl中指定的URL,也会将自动重新连接的SSID列入黑名单。允许手动重新连接,但只有在您每次连接到该WiFi SSID时,如果拥有captive_portal_server global并手动选择“使用此网络原样”,该连接才会保持连接状态。

对于移动运营商网络,captive_portal_detection_enabled仅用于在强度图标上绘制感叹号,但将保持连接状态,如果连接正常,流量将会流动。 >
在root用户的设备上,解决方案是重新启用captive_portal_server(如果已禁用它),连接到该WiFi网络,然后从俘虏门户弹出窗口的下拉菜单中选择“按原样使用此网络”,向上,禁用移动网络数据,以专注于确定可以通过Wifi网络检索的网站,方法是登录到强制门户,然后使用浏览器查找有效的网站。之后,您可以禁用captive_portal_detection_enabled以防止令人讨厌的弹出窗口。

要重新启用captive_portal_detection_enabled,如果先前已将其禁用,请发出以下命令:

settings put global captive_portal_detection_enabled 1


禁用移动网络(在“设置-数据使用-移动数据-关”下),以强制手机暂时将WiFi网络用于所有流量。一旦将所有设置都放在需要的位置,便不需要此设置。

Android M似乎要求网站能够成功加载并且不会主动返回204(无内容)。

两个选项包括但不限于

androidcheck.kiritostudio.com
captive.apple.com
www.textise.net
the network router
localhost
127.0.0.1 (if you have an onboard simple HTTP server)
and the list goes on...


找到适合您的WiFi网络的服务器(通常需要更多的想象力,并在进行身份验证之前不喜欢HTTPS流量的公司Web网关代理背后进行尝试)之后,您可以保存服务器。

通过以下方式保存服务器在启用了root权限的终端应用程序中运行此脚本,将示例URL替换为您希望的URL:

settings put global captive_portal_server androidcheck.kiritostudio.com


重新启动设备。试试看。一旦您对图标上的感叹号的行为感到满意,最后一步就是禁用捕获的门户弹出窗口,这是近十年来最不幸的发明之一。

发出命令:

settings put global captive_portal_detection_enabled 0


如果您发现自己在其他国家或出现问题的WiFi环境中,很遗憾,您需要从头开始重复上述操作,重新启用captive_portal_detection,然后重新启动,找到合适的服务器,然后再禁用门户网站检测。

评论


您是指HTTP 204(无内容)还是HTTP 404(未找到)?目前,我根据另一个答案更改为“无内容”

–安德鲁·T。♦
2015年9月10日在8:43



这解决了牛轧糖上的“已连接,没有互联网”的问题。在Nexus上运行全新的CM14.1(7.1.2)。

–伊冯
17年9月17日14:21在

#3 楼

您可以为其设置强制门户服务器地址。

settings put global captive_portal_server g.cn


,然后重新启动电话。服务器可用。

http://g.cn/generate_204