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://hosts-file.net/ad_servers.txt
https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext