解决Android/安卓原生ROM出现网络连接受限(Limited connection),网络无法链接的问题
1.安卓原生ROM出现网络连接受限
从 Android 5.0(API 级别 21)开始,Android 设备就已能够检测 Captive Portal
/ 强制门户,并通知用户他们需要登录网络才能访问互联网。Android原生系统用于检测的默认服务器是谷歌的,由于众所周知的原因无法访问。
虽然WiFi图标显示叹号和网络受限,但是访问网络问题不大,不过Chrome等应用应用会一直提示:无网络连接。
这会造成软件中需要网络连接的 WorkManager
一直不能执行
解决方法:
使用 ADB 命令解决:
删除变量&关闭检测
.\adb shell settings delete global captive_portal_mode
.\adb shell settings put global captive_portal_mode 0 (注:Android 8 不需要执行这一条)
执行上述两条命令中,可能会出现
*daemon not running; starting now at tcp:5037
*daemon started successfully
证明adb已经成功连接上手机(TCP端口不一定相同),无影响。
执行.\adb shell settings get global captive_portal_mode
,返回结果应为0
。
我认为设置 captive_portal_mode 为 0 是没有必要的,你都已经关闭检测了,为什么还需要设置 URL 呢?
另外由于默认使用 HTTPS,所以 HTTP URL 也是不用配置的。
所以只配置 captive_portal_https_url 就可以了。
此外,Android 开发者网站有内地站点:https://developer.android.google.cn/studio/releases/platform-tools/
删除默认的强制门户设置:
adb shell settings delete global captive_portal_https_url
adb shell settings delete global captive_portal_http_url
修改新的设置:
这是几个国内可用的服务器地址,也可以使用自己的服务器,返回204即可。
小米:http://connect.rom.miui.com/generate_204
华为:http://connectivitycheck.platform.hicloud.com/generate_204
Vivo:http://wifi.vivo.com.cn/generate_204
Google 大陆: g.cn/generate_204
国内还可以用 connectivitycheck.gstatic.com / www.gstatic.com / ssl.gstatic.com ,国内会自动解析到北京Google那边,在境外的话又能解析到Google全球网络去。