Android 网络视图 returns navigator.online 真

Android webview returns navigator.online true

在 Android Web 视图中,如果 navigator.onLine returns true 获取新数据,我每 10 秒重新检查一次,如果 false 继续使用本地数据。

但是,Android WebView 对于 navigator.onLine 始终 returns 为真。 在 Chrome 浏览器中(在 phone 上)同一网站正常工作并根据连接显示正确的状态 (true/false)。

我用 logcat 和远程 chrome 检查器调试了它。在远程 chrome 检查器中,我可以手动将连接切换为离线。除了在 java(本机应用程序)中使用网络侦听器之外,任何有相同问题或想法来解决该问题的人。

if (navigator.onLine) {
    // check if new data is available
    checkDataUpdate();
  } else {
    // OFFLINE - Mode
}

我遇到了同样的问题,在尝试了不同的方法后我发现我只有一个网络 属性 webView.setNetworkAvailable(true);

这是 navigator.onLine returns 总是正确的主要原因。只要发现你有上面的代码并注释掉它。之后,webView 将像 chrome 浏览器一样工作。

来自 android 文档:

setNetworkAvailable

已添加到 API 级别 3

void setNetworkAvailable (boolean networkUp)

通知 WebView 网络状态。这用于设置 JavaScript 属性 window.navigator.isOnline 并生成 online/offline 事件,如 HTML5

中指定