我已经在这个问题上工作了至少一个星期。我在StackOverflow上读过所有关于它的文章,但我仍然没有创建解决方案,我开始认为这是不可能的。
我想在布局中嵌入的want视图中显示HTML,如下所示:
问题是,如果该HTML代码中包含一个HTML5视频,由于Android:链接到错误中的一个bug,它将被裁剪。
我尝试过许多解决办法,但似乎都没有奏效。我的最后一次尝试是在全屏上显示低于Jelly的设备的视频(他们已经修复了这个版本的错误)。
我对必须显示的HTML没有任何控制,所以我找到的唯一方法就是注入javascript代码。现在,我正在处理两个onShowCustomView,使其成为全屏。
setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (android_sdk < JELLY_BEAN) {
detectVideoOnWebPage();
}
}
});
private void detectVideoOnWebPage() {
// Run javascript code that detects the video end and notifies the
// interface
String js = "javascript:";
js += "_ytrp_html5_video = document.getElementsByTagName('VIDEO')[0];";
js += "if (_ytrp_html5_video !== undefined) {";
{
js += "_ytrp_html5_video.webkitEnterFullScreen();";
js += "_VideoEnabledWebView.notifyVideoPresence();";
js += "function video_start_playing() {";
{
js += "_VideoPlayed.notifyVideoStarted();";
js += "ev.target.removeEventListener('playing', video_start_playing);";
}
js += "}";
js += "ev.target.addEventListener('playing', video_start);";
}
js += "} else if (document.getElementsByTagName('iframe')) {";
{
js += "_VideoEnabledWebView.notifyVideoPresence();";
}
js += "} else {";
{
js += "var handler = function(ev) {";
{
js += "if (ev.target.nodeName.toUpperCase() === \"VIDEO\".toUpperCase()) {";
{
js += "function video_start_playing() {";
{
js += "_VideoPlayed.notifyVideoStarted();";
js += "ev.target.webkitEnterFullScreen();";
}
js += "}";
js += "ev.target.addEventListener('play', video_start_playing);";
js += "_VideoDetected.notifyVideoPresence();";
js += "document.removeEventListener (\"DOMNodeInserted\", handler);";
}
js += "} else {";
{
js += "_ytrp_html5_video = document.getElementsByTagName('VIDEO')[0];";
js += "if (_ytrp_html5_video !== undefined) {";
{
js += "_VideoEnabledWebView.notifyVideoPresence();";
}
}
js += "};";
}
js += "};";
js += "document.addEventListener (\"DOMNodeInserted\", handler);";
}
js += "}";
loadUrl(js);
}
我的目标是:
现在,我已经达到:
发布于 2015-10-20 22:52:04
您可以在播放事件上请求全屏,如下所示:
var element = document.getElementById("video");
element.addEventListener("playing", function() {
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
}
}, false);
发布于 2013-10-31 02:24:43
您可以尝试将用户代理设置为在ICS上为我工作的webView,如下所示:
String ua = "Mozilla/5.0 (Android; Tablet; rv:20.0) Gecko/20.0 Firefox/20.0";
WebSettings s = webView.getSettings();
s.setUserAgentString(ua);
如果不管用的话,查看其他用户代理的此链接。。
祝好运
https://stackoverflow.com/questions/18353670
复制相似问题