首页 > 解决方案 > Android webview 返回 navigator.online true

问题描述

在 Android Webview 中,如果 navigator.onLine 返回 true 以获取新数据,或者如果 false 继续使用本地数据,我将每 10 秒重新检查一次。

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

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

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

标签: androidwebviewchromium

解决方案


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

这是 navigator.onLine 始终返回 true 的主要原因。只要发现你有上面的代码并把它注释掉。之后,webView 将像 chrome 浏览器一样工作。

来自安卓文档:

setNetworkAvailable

在 API 级别 3 中添加

void setNetworkAvailable (boolean networkUp)

通知 WebView 网络状态。这用于设置 JavaScript 属性 window.navigator.isOnline 并生成 HTML5 中指定的在线/离线事件


推荐阅读