【发布时间】:2021-01-24 13:03:52
【问题描述】:
我尝试将 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 检查了这个值,它总是假的。
我使用这个https://github.com/cprcrack/VideoEnabledWebView 将视频设置为全屏。
在 Android 9 上测试 - 编译和目标 SDK 版本:30 - 最低 Sdk 版本:24
【问题讨论】:
标签: android webview video-streaming html5-video fullscreen