You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native WebView在Android设备离线加载图表失败求助

解决Android WebView断开USB后加载图表报错(ERR_CONNECTION_REFUSED)的问题

我之前开发时也碰到过几乎一模一样的情况,结合你描述的症状——模拟器、iOS正常,USB连接Android设备时也能加载,断开就报net:ERR_CONNECTION_REFUSED(错误码-6),大概率是网络访问的场景差异导致的,给你几个针对性的排查和解决方向:

1. 优先排查本地服务的访问地址(最常见原因)

很多开发者在调试时会用电脑的localhost或者局域网IP(比如192.168.xxx.xxx)来加载本地运行的图表服务,这时候USB连接时,adb的反向代理(比如你可能执行过adb reverse tcp:8080 tcp:8080这类命令)会把设备的请求转发到电脑的服务上,所以能正常访问。但断开USB后,设备和电脑的代理通道消失,自然就无法访问电脑上的服务了。

解决办法:

  • 如果是静态图表文件(比如本地的HTML/JS/CSS):把文件放到Android项目的assets目录下,用file:///android_asset/chart.html这样的路径加载,完全不依赖外部网络。
  • 如果是依赖后端服务的动态图表:把服务部署到设备能访问的公网地址,或者和设备连接同一个Wi-Fi的局域网服务器上,确保设备断开USB后能通过Wi-Fi/移动数据访问到该服务地址。

2. 检查Android网络权限与明文请求限制

  • 确认AndroidManifest.xml中是否添加了必要的网络权限:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  • 如果你加载的图表地址是HTTP明文协议(非HTTPS),Android 9及以上版本默认禁止明文请求,需要在<application>标签中添加配置:
    android:usesCleartextTraffic="true"
    
    或者更规范的方式是配置网络安全配置文件,允许特定域名的明文请求。

3. 确认WebView的必要设置

很多图表依赖JavaScript渲染,WebView默认可能未开启相关功能,导致加载失败:

WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true); // 必须开启JS
webSettings.setDomStorageEnabled(true); // 部分图表需要DOM存储支持
webSettings.setAllowFileAccess(true); // 如果加载本地文件需要开启

4. 验证设备网络的实际可用性

断开USB后,先在设备自带的浏览器中访问你加载图表的地址,如果浏览器也无法打开,说明问题出在设备网络或者服务本身,和WebView无关:

  • 检查设备的Wi-Fi/移动数据是否正常连接
  • 确认服务地址是否正确、服务是否正常运行

内容的提问来源于stack exchange,提问作者Megha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:06:53