【问题标题】:Android webview returns navigator.online trueAndroid webview 返回 navigator.online true
【发布时间】:2019-02-10 17:01:45
【问题描述】:

在 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
}

【问题讨论】:

    标签: android webview chromium


    【解决方案1】:

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

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

    来自安卓文档:

    setNetworkAvailable
    

    在 API 级别 3 中添加

    void setNetworkAvailable (boolean networkUp)
    

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

    【讨论】:

    • 并非在所有情况下都有效,但在大多数情况下,谢谢,如果其他人知道更多副作用,现在就告诉我们。
    猜你喜欢
    • 2021-09-08
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    相关资源
    最近更新 更多