貌似自从Android 5.0 Lollipop开始,Google就增加了一个Portal Server门户服务器的连通性测试,大意是为了在连接到需要验证的Public Wi-Fi时,能根据连通测试的情况自动弹出Wi-Fi登陆提示页面,但是默认的地址是 [国内不存在的] gstatic.com 的,鉴于国内的奇葩环境,不管Wi-Fi是不是好的,都会被认为网络是不通的显示一个感叹号提示(Android 7.0 Nougat改成了小叉叉)……
注意:本文提到的方法都无需root,但是需要adb工具并开启开发者选项。
Android 5.0 Lollipop & Android 6.0 Marshmallow的解决方法
在Android 5.0 Lollipop & Android 6.0 Marshmallow时,根据小狐狸的分析,可以用以下两个方法解决
-
- 方法一:直接禁用Portal Server的连通性测试
在开启了开发者选项的情况下,连接电脑,安装最新版的adb工具,然后执行以下命令:
1
|
adb shell “settings put global captive_portal_detection_enabled 0”
|
然后飞行模式一下,就没有了,但是有个弊端,就是如果你连接公共Wifi需要验证的时候,会发现不会自动弹出验证网页,需要自己打开浏览器访问任意网页才行。
-
- 方法二:更改默认的Portal Server地址
网上有一些热心人士提供了在国内可正常连接的Portal Server,包括小狐狸、v2ex、g.cn等,我个人比较喜欢g.cn的,同样在adb下输入以下命令可以达到修改Portal Server的目的:
1
2
3
|
adb shell “settings put global captive_portal_server g.cn”
或
adb shell “settings put global captive_portal_server captive.v2ex.co”
|
方法二我一直都在用,但是直到Android 7 Nougat这个办法就失效了……如果你用了方法一,应该不用往下看,以下都是基于方法二的调整。
Android 7.0 Nougat的解决方法
这个时候,之前的方法失效了,于是遍寻网上,后来有人发现是验证方法改成HTTPS了,而之前是HTTP的,于是热心人士的服务器纷纷失效了,因此v2ex还升级了之前提供的服务,开出了一个子域名专门做Portal Server,并同时提供HTTP和HTTPS两种连接方式。同样可用的热心人士服务器有Google.cn …… 如果你之前用的就是v2ex的,那么在v2升级后,你就检测就会恢复了,不需要再修改设置。
在Android 7 Nougat仍然可以通过禁用检测的方式来解决这个问题,但我更喜欢无损解决,所以,把上面方法二的服务器换一下就行:
1
|
adb shell “settings put global captive_portal_server www.google.cn”
|
Android 7.1.x Nougat的解决方法
ref:http://bbs.gfan.com/android-8892832-1-1.html
在android 7.1.2中,以前所用的感叹号处理方法不再有效,看了看代码,有两种方式可以消除感叹号
1.直接禁用网络验证检测,使用命令:
adb shell settings put global captive_portal_mode 0
2.修改网络验证的HTTPS URL(推荐):
adb shell settings put global captive_portal_https_url https://connectivitycheck.gstatic.com/generate_204
PS: connectivitycheck.gstatic.com 解析得到的IP在国内,不用哪个啥,android O应该也可以用这两种处理(没测试)
以下无效:
请执行以下命令
|
|
目前来看,我刚升级到7.1.1的Nexus 5x是解决了这个问题了,不知道下次版本升级又会发生什么…… 以上的操作,如果要恢复出厂原始设置,可以执行以下命令:
|
|
P.S:个人极力推荐有各种科学上网需求的童鞋,完全可以买一个Google Project Fi的SIM卡来日常用,天然科学上网,自带米国手机号,无障碍平滑激活Google Now/Location等服务,等有空写写Fi的使用体会。
-EOF-
——————–
引用参考: