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.
3 Réponses :
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);
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);
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">
Copie possible de WebSocket dans Android WebView
Alors dois-je changer le fichier HTML / JS