2
votes

Les vidéos dans WebView ne fonctionnent qu'à la première session

J'ai une application Android et un écran avec webview qui contient une vidéo en html comme:

webView.loadDataWithBaseURL("", content, "text/html", "UTF-8", "");

et j'ai défini ce code pour WebView:

String content = "...<script data-cfasync="false" defer type="text/javascript" src="https://..."></script>..."


2 commentaires

Votre code est-il à l'intérieur de onCreate () ? Si oui, essayez de le mettre sur onStart () .


@Maxouille n'a pas aidé


3 Réponses :


0
votes

Je pense que ce problème s'est produit sur la version 73 de chrome. J'ai donc une astuce pour le résoudre temporairement, définissez ce code pour WebView:

     String tempUserAgent = webView
          .getSettings()
          .getUserAgentString()
          .substring(0, webView.getSettings()
                        .getUserAgentString()
                        .indexOf("AppleWebKit"));
     webView.getSettings()
          .setUserAgentString(tempUserAgent + "AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/72.0.3626.121 Safari/537.36");


0 commentaires

0
votes

cela m'a aidé:

webView.getSettings().setMediaPlaybackRequiresUserGesture(false);


0 commentaires

0
votes

Ceci est peut-être lié à un bogue dans le 73.0.3683.90 version de Chrome. La mise à jour vers V74 de Chrome devrait résoudre le problème.


2 commentaires

Pouvez-vous donner plus de détails?


Je ne peux pas dire la nature exacte de la cause. Cependant, le problème semble lié à la contrainte selon laquelle la lecture vidéo dans la vue Web oblige l'utilisateur à lancer un geste avant de pouvoir lire la vidéo. En plus de ne pas pouvoir lire la vidéo, nous avons constaté que la vidéo ne pouvait pas non plus être ouverte en plein écran. L'API d'erreur ne peut être déclenchée que par un geste de l'utilisateur. serait produite. La modification du paramètre setMediaPlaybackRequiresUserGesture sur false résoudrait le problème, cependant, cela ne sert que de contournement. Lors de la mise à jour vers V74 de Chrome / Webview, le problème a été résolu.