3
votes

Pourquoi Android WebView ne prend pas en charge webSocket?

Dans mon application, j'utilise webView pour appeler une URL. Mon site Web utilise Web Socket pour modifier les valeurs. lorsque j'ouvre la même URL dans l'application Chrome, sa valeur change, cela signifie que le socket Web fonctionne correctement. Mais, à l'intérieur de WebView, le changement de valeur ne se produit pas. Cela signifie-t-il que Web Socket ne prend pas en charge le widget WebView. Où, j'ai remarqué que la méthode onLoadResource () de WebViewClient continue d'appeler des temps infinis.


2 commentaires

Copie possible de WebSocket dans Android WebView


Alors dois-je changer le fichier HTML / JS


3 Réponses :


6
votes

Web socket ne fonctionnait pas car le stockage local est désactivé par défaut.

L'activer dans mon Android WebView a résolu le problème.

webView.getSettings().setDomStorageEnabled(true);


0 commentaires

0
votes

Pour mon cas, je devais également activer AppCache. Cela fonctionne bien maintenant.

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);


0 commentaires

0
votes

Vérifiez d'abord votre code d'erreur; si le code est: ERR_CLEARTEXT_NOT_PERMITTED essayez de l'ajouter à votre balise d'application dans votre AndroidManifest.xml comme ci-dessous:

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


0 commentaires