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

Cordova Android中Navigator.onLine失效问题求助

解决方案与思路

核心问题原因

Cordova Android 的 WebView 对原生 Navigator.onLine 的实现存在局限——它会将本地资源访问判定为“在线”,即使设备处于飞行模式、无网络连接,也会返回 true。而 iOS 端的 WebView 实现逻辑不同,所以该 API 表现正常。因此不能依赖原生 Navigator.onLine,必须使用专门的网络状态插件。

具体解决步骤

  • 安装官方网络状态插件
    使用 Cordova 官方提供的 cordova-plugin-network-information 插件,它能准确获取设备的真实网络状态:

    cordova plugin add cordova-plugin-network-information
    
  • 使用插件 API 替代原生 Navigator.onLine
    插件提供了更可靠的网络状态判断方式:

    • 获取当前网络类型:通过 navigator.connection.type 取值,当值为 Connection.NONE 时表示无网络连接,其他有效值包括 Connection.WIFI、Connection.CELL 等。
    • 监听网络状态变化:注册 online 和 offline 事件来实时响应网络状态切换:
      // 监听离线事件
      document.addEventListener("offline", function() {
          console.log("设备已离线");
          // 执行离线逻辑
      }, false);
      
      // 监听在线事件
      document.addEventListener("online", function() {
          console.log("设备已在线");
          // 执行在线逻辑
      }, false);
      
  • 验证权限与版本兼容性

    • 确认 AndroidManifest.xml 中存在网络状态权限(插件通常会自动添加,若手动修改过配置需检查):
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      
    • 如果安装插件时出现版本兼容问题,可指定适配 cordova-android 10/11 的插件版本,例如:
      cordova plugin add cordova-plugin-network-information@3.0.0
      

额外测试建议

在飞行模式、关闭 WiFi 等场景下,通过打印 navigator.connection.type 的值来验证插件是否正常工作,确保逻辑依赖的是插件提供的状态而非原生 Navigator.onLine。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:16:31