Android 5.0中引入了 isCaptivePortal() 来判断当前的网络状态,如果指定的服务器返回码为204说明网络已连接,如果不为204说明网络需要网页登录,无响应说明当前的网络不可用。通过这个机制来判断网络的状态,自动切换到有网络的环境下,不过这个服务默认的服务器为谷歌的 clients3.google.com/generate_204 页面,所以使用了国外的CM等ROM,在国内使用时,感叹号或叉号会一直存在。

当时小狐狸给出的解决方案是使用

adb shell "settings put global captive_portal_server www.isthnew.com"

来替换原来的服务。

直到7.0,7.1时仍可以使用Https链接来替换(不知道是否是强制Https,我自己在80和443端口都用 Nginx 搭建了generate_204页面)

db shell "settings put global captive_portal_server https://www.isthnew.com"

但是在Android 7.1.1不知道谷歌怎么想的,稍微改了下这个地方的验证方式

7.0为
20161206163643

7.11为
20161206163653

也就是改了个名,顺便不再自动拼接链接,所以现在应该使用

adb shell "settings put global captive_portal_https_url https://www.isthnew.com/generate_204"