Android WebView HTML5 видео принудительно полноэкранный

Я работал над этим вопросом не менее одной недели. Я прочитал весь пост об этом в StackOverflow, но я до сих пор не нашел решение и начинаю думать, что это невозможно.

Я хочу отобразить HTML в веб-представлении, встроенном в макет, например:

Проблема в том, что если этот HTML-код содержит HTML5-видео внутри, он будет обрезан из-за ошибки в ОС Android:Ссылка на ошибку.

Я перепробовал много обходных путей, но ни один из них, похоже, не работает. Моя последняя попытка - показать видео в полноэкранном режиме для устройств ниже Jelly Bean (они исправили ошибку в этой версии).

У меня нет никакого контроля над 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);
}

Моя цель:

Определите, когда HTML содержит видео HTML5.Для версий ОС ниже, чем Jelly Bean, используйте полноэкранный режим.

Прямо сейчас я достиг:

Отображать в полноэкранном режиме для html5-видео, которые не находятся в iframe для версий ниже, чем Ice Cream Sandwich (ICS игнорирует webkitEnterFullScreen)

Ответы на вопрос(2)

Ваш ответ на вопрос