添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

为什么android webView不支持webSocket?

5 人关注

在我的应用程序中,我正在使用webView来调用一个URL。我的网站是使用Web Socket来改变数值的。 当我在chrome应用程序中打开同一个URL时,它的值发生了变化,这意味着web socket工作正常。但是,在webView里面,值没有发生变化。这是否意味着webSocket在webView部件中不支持。我注意到,WebViewClient的onLoadResource()方法一直在无限次地调用。

2 个评论
那么我是否需要修改HTML/JS文件?
javascript
android
webview
hannna patait
hannna patait
发布于 2019-02-04
3 个回答
hannna patait
hannna patait
发布于 2020-09-30
已采纳
0 人赞同

网络套接字没有工作,因为本地存储在默认情况下被禁用。

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

webView.getSettings().setDomStorageEnabled(true);
    
嗨,这是否意味着websocket现在在你的webview应用程序中正常工作了?我这样问是因为在以前的问题 ( stackoverflow.com/questions/13507438/... )这个话题,接受的答案说不支持。所以我想在开始之前确定一下。谢谢!
Harpreet
Harpreet
发布于 2020-09-30
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);
    
Kaeson
Kaeson
发布于 2020-09-30
0 人赞同

首先检查你的错误代码;如果代码是。替换代码0】试着在你的 AndroidManifest.xml 中添加这个应用标签,如下图。

<application