Android 7.1.1 消除网络报错小叉叉的N种方法

作者 Known Rabbit 日期 2017-04-07
Android 7.1.1 消除网络报错小叉叉的N种方法

Marshmallow及以前的版本,修改 captive_portal_server 的方法尽人皆知,在Nougat版本更新后这个方法就没什么卵用了。原因呢,简单来讲,就是检测网络连接的那段代码被重!写!了!

下面把几个好用的方法都说一下。

修改系统设置

Nougat系统中,主要修改的就是两个设置项,captive_portal_http_url 和 captive_portal_https_url

adb root

adb shell settings put global captive_portal_http_url http://google.cn/generate_204

adb shell settings put global captive_portal_https_url https://google.cn/generate_204

但到底使用HTTP还是HTTPS去发请求呢?从这里可以看出,系统获取设置项 captive_portal_use_https 并在获取不到时候取默认值1,所以默认是HTTPS。

mUseHttps = Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.CAPTIVE_PORTAL_USE_HTTPS, 1) == 1;

使用HTTPS的话,有一点要注意,就是https的链接必须要有一个有效的证书!否则系统会判定为连接不可用。之前我的url设置为http://g.cn/generate_204 ,测试了http好用,我就在前面加了个s作为HTTPS URL,不成想g.cn的证书是google.com的,而我当时还不知道使用HTTPS的默认值是1,于是我苦恼了很久……为什么还是有这个小叉叉!

HTTPS可用的备用检测server

按ping值排序。

https://google.cn/generate_204

https://www.google.cn/generate_204

https://www.qualcomm.cn/generate_204

https://http204.sinaapp.com/generate_204

https://captive.v2ex.co/generate_204

禁用网络检测

adb shell settings put global captive_portal_detection_enabled 0

这个和老版本设置就一样了。但是这么方便的网络检测,关了就有点浪费了。

修改hosts

直接修改谷歌的Hosts成国内可用的IP,也是极好的。

修改hosts需要root并且,system分区挂载为可写。

安卓可以用这个小工具: Go Hosts

好处是,不仅可以免VXX上谷X,还可以顺道安装几个去广告的hosts,一举X得[棒]

源地址:

https://raw.githubusercontent.com/racaljk/hosts/master/hosts

附赠几个去广告的

国内的:

https://github.com/vokins/yhosts/raw/master/hosts

AdAway自带:

https://adaway.org/hosts.txt

https://hosts-file.net/ad_servers.txt

https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext