android 网络连接受限解决

文章讲述了在Android设备上遇到的网络问题,如SSLHandshakeException,可能是由于网络限制(如captiveportal)或系统时间错误导致。给出了临时使用其他验证URL、修改config.xml文件以及调整手机时间的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题log

07-21 11:12:12.623  2802 15955 D NetworkMonitor/109: PROBE_HTTPS https://www.google.com/generate_204 Probe failed with exception javax.net.ssl.SSLHandshakeException: Chain validation failed
07-21 11:12:12.702  2802 15956 D NetworkMonitor/109: PROBE_HTTP http://connectivitycheck.gstatic.com/generate_204 time=870ms ret=204 request={Connection=[close], User-Agent=[Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.32 Safari/537.36]} headers={null=[HTTP/1.1 204 No Content], Connection=[close], Content-Length=[0], Cross-Origin-Resource-Policy=[cross-origin], Date=[Wed, 23 Aug 2023 09:06:01 GMT], X-Android-Received-Millis=[1689909132701], X-Android-Response-Source=[NETWORK 204], X-Android-Selected-Protocol=[http/1.1], X-Android-Sent-Millis=[1689909131931]}
07-21 11:12:13.068  2802 15954 D NetworkMonitor/109: PROBE_FALLBACK http://www.google.com/gen_204 time=362ms ret=204 request={Connection=[close], User-Agent=[Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.32 Safari/537.36]} headers={null=[HTTP/1.1 204 No Content], Connection=[close], Content-Length=[0], Content-Security-Policy=[object-src 'none';base-uri 'self';script-src 'nonce-Nx4YkFMXBPZjNT5UaF_eew' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other], Content-Type=[text/html; charset=UTF-8], Date=[Wed, 23 Aug 2023 09:06:02 GMT], Origin-Trial=[Ap+qNlnLzJDKSmEHjzM5ilaa908GuehlLqGb6ezME5lkhelj20qVzfv06zPmQ3LodoeujZuphAolrnhnPA8w4AIAAABfeyJvcmlnaW4iOiJodHRwczovL3d3dy5nb29nbGUuY29tOjQ0MyIsImZlYXR1cmUiOiJQZXJtaXNzaW9uc1BvbGljeVVubG9hZCIsImV4cGlyeSI6MTY4NTY2Mzk5OX0=, AvudrjMZqL7335p1KLV2lHo1kxdMeIN0dUI15d0CPz9dovVLCcXk8OAqjho1DX4s6NbHbA/AGobuGvcZv0drGgQAAAB9eyJvcmlnaW4iOiJodHRwczovL3d3dy5nb29nbGUuY29tOjQ0MyIsImZlYXR1cmUiOiJCYWNrRm9yd2FyZENhY2hlTm90UmVzdG9yZWRSZWFzb25zIiwiZXhwaXJ5IjoxNjkxNTM5MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=], Permissions-Policy=[unload=()], Server=[gws], Set-Cookie=[1P_JAR=2023-08-23-09; expires=Fri, 22-Sep-2023 09:06:02 GMT; path=/; domain=.google.com; Secure], X-Android-Received-Millis=[1689909133066], X-Android-Response-Source=[NETWORK 204], X-Android-Selected-Protocol=[http/1.1], X-Android-Sent-Millis=[1689909132839], X-Frame-Options=[SAMEORIGIN], X-XSS-Protection=[0]}
07-21 11:12:13.071  2802 15954 D NetworkMonitor/109: isCaptivePortal: isSuccessful()=false isPortal()=false RedirectUrl=null isPartialConnectivity()=true Time=1264ms

可以看到是访问https://www.google.com/generate_204  时失败

失败的原因:

1.连接的是国内的网络,是无法访问国外的网站的,自然会失败。

2.如果连接的国外的网络的话,并且发现可以正确访问国外的某些网站。但是还算提示网络受限,那这个时候 请排查  手机的系统时间是否正确,访问这个网站需要时间误差大概不能超过一个月(没有具体实验过)。

解决方案:

1.  临时更换检验网站。(临时解决方案)

adb shell settings put global captive_portal_https_url https://connect.rom.miui.com/generate_204

2. 更改代码。

packages/modules/NetworkStack/res/values/config.xml 
 
<!-- HTTP URL for network validation, to use for detecting captive portals. -->
<string name="default_captive_portal_http_url" translatable="false">http://connectivitycheck.gstatic.com/generate_204</string>
<!-- HTTPS URL for network validation, to use for confirming internet connectivity. -->
- <string name="default_captive_portal_https_url" translatable="false">https://www.google.com/generate_204</string>
+ <string name="default_captive_portal_https_url" translatable="false">https://developers.google.cn/generate_204</string>

3.将手机的时间 设置为自动设置时间

参考文章:Android系统连接WIFI显示网络连接受限_android 网络连接受限_阿炎-阿景的博客-CSDN博客

### 解决方案概述 对于Android Studio模拟器网络连接受限的问题,存在多种解决方案。每种方法适用于不同场景下的问题根源。 #### 方法一:修改Wi-Fi设置中的DNS服务器 当遇到模拟器无法正常访问互联网的情况时,可以通过手动指定DNS来解决问题[^1]。启动模拟器之后,默认情况下它会自动连接到名为`AndroidWifi`的无线网络。此时可以按照以下方式调整: - 进入已连接WiFi的具体配置页面; - 记录当前使用的IP地址以及网关信息; - 修改DNS服务器为公共DNS服务提供商(如Google DNS `8.8.8.8`, Cloudflare DNS `1.1.1.1`) 或者使用本地计算机上的首选DNS服务器。 这种方法能够有效改善因默认DNS解析失败而导致的连通性障碍。 ```bash # 使用命令行工具查询本机DNS配置 ipconfig /all ``` #### 方法二:通过命令行参数自定义DNS 另一种更为灵活的方式是在启动模拟器前通过命令行传递特定参数以设定所需的DNS服务器[^3]。这一步骤涉及到了解并定位至SDK路径内的emulator文件夹位置,并在此基础上执行相应指令完成定制化部署。 ```powershell .\emulator -avd <Your_AVD_Name> -dns-server 8.8.8.8,8.8.4.4 ``` 此法特别适合那些希望一次性解决多台设备间潜在冲突或是频繁遭遇相同难题的技术人员。 #### 方法三:禁用Private DNS功能 如果确认不是由于防火墙或其他安全软件阻止了流量,则尝试更改模拟器内部关于隐私保护的相关选项也可能是有效的措施之一[^4]。具体来说就是将“私人DNS”的工作模式切换成“关闭”。 - 前往模拟器内设菜单; - 寻找有关于网络安全性的子项; - 将其状态更改为“未加扰”,即取消任何额外加密层的应用。 上述三种途径均有助于克服由各种因素引起的Android Studio模拟器联网异常状况。实际应用过程中可根据具体情况和个人偏好选择最合适的一种来进行处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值