Android 5/6/7/7.1.x 去除网络感叹号方法

貌似自从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工具,然后执行以下命令:

然后飞行模式一下,就没有了,但是有个弊端,就是如果你连接公共Wifi需要验证的时候,会发现不会自动弹出验证网页,需要自己打开浏览器访问任意网页才行。

    • 方法二:更改默认的Portal Server地址

网上有一些热心人士提供了在国内可正常连接的Portal Server,包括小狐狸v2exg.cn等,我个人比较喜欢g.cn的,同样在adb下输入以下命令可以达到修改Portal Server的目的:

方法二我一直都在用,但是直到Android 7 Nougat这个办法就失效了……如果你用了方法一,应该不用往下看,以下都是基于方法二的调整。

Android 7.0 Nougat的解决方法

这个时候,之前的方法失效了,于是遍寻网上,后来有人发现是验证方法改成HTTPS了,而之前是HTTP的,于是热心人士的服务器纷纷失效了,因此v2ex还升级了之前提供的服务,开出了一个子域名专门做Portal Server,并同时提供HTTP和HTTPS两种连接方式。同样可用的热心人士服务器有Google.cn …… 如果你之前用的就是v2ex的,那么在v2升级后,你就检测就会恢复了,不需要再修改设置。

在Android 7 Nougat仍然可以通过禁用检测的方式来解决这个问题,但我更喜欢无损解决,所以,把上面方法二的服务器换一下就行:

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应该也可以用这两种处理(没测试)

 

以下无效:

请执行以下命令

 

1
2
3
4
5
adb shell “settings put global captive_portal_https_url https://www.google.cn/generate_204”
adb shell “settings put global captive_portal_http_url http://www.google.cn/generate_204”
adb shell “settings put global captive_portal_https_url https://captive.v2ex.co/generate_204”
adb shell “settings put global captive_portal_http_url http://captive.v2ex.co/generate_204”

目前来看,我刚升级到7.1.1的Nexus 5x是解决了这个问题了,不知道下次版本升级又会发生什么…… 以上的操作,如果要恢复出厂原始设置,可以执行以下命令:

 

1
2
3
4
adb shell “settings delete global captive_portal_server”
adb shell “settings delete global captive_portal_https_url”
adb shell “settings delete global captive_portal_http_url”
adb shell “settings put global captive_portal_detection_enabled 1”

P.S:个人极力推荐有各种科学上网需求的童鞋,完全可以买一个Google Project Fi的SIM卡来日常用,天然科学上网,自带米国手机号,无障碍平滑激活Google Now/Location等服务,等有空写写Fi的使用体会。

-EOF-

——————–
引用参考:

  1. 狐狸的小小窝:关于 android 5.0 网络图标上的感叹号及其解决办法
  2. V2EX:关于 V2EX 提供的 Android Captive Portal Server 地址的更新
  3. V2EX:关于 Android 7.0 的 global captive_server_use_https 设置的默认值
  4. V2EX:可否加入 generate_204 ,方便 Android L 消除叹号。
  5. 私家折腾笔记:Android 7.1.1 去除网络叉号