这里我指的是WIFI可正常连接网络使用的前提下,手机状态栏WIF图标上仍出现感叹号的情况。
原因:
从 Android 5.0 开始,当安卓系统连接网络时,系统会向Google的某个特定的网址(http://www.google.com/generate_204)发送数据请求来判断当前网络状态。
如果成功就会返回一个特定的值表示设备可以连接到互联网。然而这个特定的网址在国内是无法正常访问的,因此感叹号就出现了。
解决方法(均无需 ROOT):
预先:将手机通过 USB 连接至电脑,通过开发者模式调用ANDROID的 USB 调试选项,并同意手机中弹出的【允许使用此电脑进行调试信息】。
上图表示已成功连接到你的手机adb模式
- 第一种:关闭网络检查服务
思路:使用 ADB 命令关闭系统网络检查服务:
操作:
在ADB命令行中输入:
$ adb shell settings put global captive_portal_detection_enabled 0
但在你使用公共 WIFI 这种需要使用 portal 验证的网络时,因为网络检查被关闭,系统在访问 portal 验证页面时无法返回正确的值,最终导致无法完成验证和上网。 - 第二种:修改网络检查服务的网址
思路:使用 ADB 命令将检测服务的网址换成可以正常访问的网址。
国内满足要求的服务器有很多(也可自建),比如Tengine站点:http://connect.rom.miui.com/
操作:
在ADB命令行中输入:
$ adb shell settings put global captive_portal_server connect.rom.miui.com
完成操作后:
- 或选择手动重启手机,重新连接WIFI。
- 或直接打开飞行模式(此时WIFI会被强制关闭)然后关闭飞行模式后,手动重新打开WIFI。
以上操作完成后,可能在连接WIFI后会弹出网络认证【即便它不是公共网络】此时它弹出的是你刚刚修改的网页地址,点一下认证提示就可以了。
顺利完成以上步骤即可发现感叹号已消失。
还原方法:
若想要还原回去,仍可通过 ADB 命令行方式,连接手机后在 ADB 命令控制行中输入以下命令:
-
(针对你使用的第一种方法)
$ adb shell settings put global captive_portal_detection_enabled 1 -
(针对你使用的第二种方法)
$ adb shell settings delete global captive_portal_server
即可完成还原。