微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android WebView setMediaPlaybackRequiresUserGesture(false) 只工作一次

如何解决Android WebView setMediaPlaybackRequiresUserGesture(false) 只工作一次

我尝试将 Android WebView 中的视频设置为全屏,为此我将 setmediaplaybackRequiresUserGesture 设置为 false。这是工作一次,但在结束全屏并尝试再次将其设置为全屏后,由于此 js 错误而无法正常工作:

I/chromium: [INFO:CONSOLE(1)] "Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user gesture.",source:  (1)

我像这样初始化 webview:

webView = root.findViewById(R.id.animeWebView);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSupportZoom(false);
webView.getSettings().setBuiltInZoomControls(false);
webView.getSettings().setLoadWithOverviewmode(false);
webView.getSettings().setUseWideViewPort(false);
webView.getSettings().setmediaplaybackRequiresUserGesture(false);
webView.getSettings().setJavaScriptCanopenWindowsAutomatically(true);

我是这样进入全屏的:

getWebView().evaluateJavascript("(function() { document.querySelector(\"#html5_player\").requestFullscreen(); })();",null);

退出

getWebView().evaluateJavascript("(function() { document.exitFullscreen(); })();",null);

然后我尝试再次进入全屏 => 我上面写的失败。

我使用 getmediaplaybackRequiresUserGesture 检查了该值,它始终为 false。

我使用此 https://github.com/cprcrack/VideoEnabledWebView 将视频设置为全屏。

在 Android 9 上测试 - 编译和目标 Sdk 版本:30 - 最小 Sdk 版本:24

解决方法

这个不干净的解决方法对我有用。

const users = await axios.get()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。