当连接到互联网时,系统会检查它是否在一个围墙花园中,这只是试图连接到谷歌。如果失败,在安卓5中,WiFi图标或信号图标上会有一个感叹号。
在某些情况下,这是很烦人的。比如,在中国,谷歌被封锁了,感叹号就会一直存在,这毫无意义。
我怎样才能禁用这个检查,并使系统认为,连接的WiFi/移动数据就是连接的互联网?
这很简单。在终端(需要root权限),或在adb shell
(不需要root权限),发出命令
settings put global captive_portal_detection_enabled 0
并重新启动。它应该被禁用。 现有的状态也可以通过以下命令来验证
settings get global captive_portal_detection_enabled
响应为"null"表示全局键值没有被设置,安卓将回到默认的开启状态并进行检测。如果检测被禁用,将收到"0"的响应。
更多信息:安卓:如何在安卓4.2.2和4.3上删除 "圈养门户 "检测</a>;
在5.2.2和4.3.1中也可以使用。
在Shamu(Nexus 6)的Android M开发者预览版中,可能还有该操作系统的其他版本,无论captive_portal_server全局
的状态如何,操作系统都会使用captive_portal_detection_enabled
,以确定WiFi网络的健康状况。
对于WiFi网络,它不仅会在强度图标上画一个感叹号,而且如果没有通过该SSID成功 "curl "全局指定的URL,它将把该SSID列入自动重新连接的黑名单。手动重新连接是允许的,但只有在你启用了captive_portal_detection_enabled
并在每次连接到该WiFi SSID时手动选择"Use This Network As-Is"。这种覆盖是暂时的。
对于移动供应商的网络,captive_portal_server
只是用来在强度图标上画一个感叹号,但会保持连接,如果连接正常,流量会流动。
在你的root设备上,解决方案是重新启用captive_portal_detection_enabled
(如果你已经禁用它),连接到该WiFi网络,从captive portal弹出的下拉菜单中选择"Use This Network As-Is",禁用你的移动网络数据,专注于确定一个可以通过Wifi网络检索的网站,登录你的captive portal,然后用浏览器找到一个能用的网站。之后,你可以禁用captive_portal_detection_enabled
来防止恼人的弹出窗口。
要重新启用你的captive_portal_detection
,如果你以前禁用了它,发出命令:
settings put global captive_portal_detection_enabled 1
禁用您的移动网络(在设置-数据使用-移动数据-关闭下),迫使手机暂时使用WiFi网络进行所有通信。一旦你把所有的设置放在需要的地方,就不需要这样做了。
安卓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流量的企业网络网关代理背后进行尝试,在认证之前),你可以保存服务器。
在你的支持root的终端应用中运行这个程序来保存服务器,用你希望能工作的URL替换例子:
settings put global captive_portal_server androidcheck.kiritostudio.com
重新启动你的设备。试试吧。一旦你对图标上的感叹号的行为感到满意,最后一步是禁用俘虏式门户弹出窗口,这是本十年来最不幸的发明之一。
发布命令:
settings put global captive_portal_detection_enabled 0
如果你发现自己在不同的国家或WiFi情况下出现问题,不幸的是,你需要从头重复上述操作,重新启用captive_portal_detection_enabled
,重新启动,找到合适的服务器,之后再禁用门户检测。
你可以将你的圈养门户服务器地址设置为它。
settings put global captive_portal_server g.cn
然后,重新启动你的手机。
PS:在此之前,你可以验证一下服务器是否可用。