为什么Android WebView不支持WebSocket?

时间:2019-02-04 09:24:09

标签: javascript android webview

在我的应用程序中,我正在使用webView调用URL。我的网站正在使用Web Socket更改值。 当我在chrome应用程序中打开相同的URL时,其值更改,这意味着Web套接字运行正常。但是,在webView内部值更改没有发生。这是否意味着webView小部件不支持web套接字。在哪里,我注意到WebViewClient的onLoadResource()方法不断调用无限次。

3 个答案:

答案 0 :(得分:1)

Web套接字不起作用,因为默认情况下禁用了本地存储。

在我的Android WebView中启用它解决了该问题。

webView.getSettings().setDomStorageEnabled(true);

答案 1 :(得分:0)

就我而言,我还必须启用AppCache。现在工作正常。

final WebSettings settings = web.getSettings();

    settings.setLoadsImagesAutomatically(true);
    settings.setJavaScriptEnabled(true);
    settings.setDomStorageEnabled(true);
    settings.setAppCacheEnabled(true);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        settings.setSafeBrowsingEnabled(false);
        settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
    }
    web.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        CookieManager.getInstance().setAcceptThirdPartyCookies(web, true);
    }


    // Extras tried for Android 9.0, can be removed if want.
    settings.setAllowContentAccess(true);
    settings.setAllowFileAccess(true);
    settings.setBlockNetworkImage(false);

答案 2 :(得分:0)

请先检查您的错误代码;如果代码为:ERR_CLEARTEXT_NOT_PERMITTED尝试将其添加到AndroidManifest.xml中的应用程序标签中,如下所示:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:theme="@style/AppTheme"
    android:usesCleartextTraffic="true">