Android WebView 仅显示黑屏,iframe 中包含全屏视频

标签 android html iframe

问题

我在 React Native 应用程序中运行自定义版本的 Cordova WebView。在网站中,有一个嵌入的视频,例如来自 YouTube、我的 CDN 等,它被包裹在 <iframe> 中。标签。当我点击全屏时,屏幕变黑了,我只能听到音频播放。

我的尝试

我已尝试通过 StackOverflow 上的许多建议进行修复,例如:

  • android:hardwareAccelerated=true
  • 实现定制 onShowCustomViewonHideCustomView :
    @Override
    public void onShowCustomView(View v, WebChromeClient.CustomViewCallback cb) {

        if (mVideoView != null) {
            cb.onCustomViewHidden();
        } else {
            FrameLayout f = (FrameLayout) v;

            mVideoView = v;
            mWebView.setVisibility(View.GONE);

            f.getChildAt(0).setFocusable(true);

            mCustomView = new FrameLayout(mWebView.getContext());
            mCustomView.setVisibility(View.VISIBLE);
            mCustomView.addView(mVideoView);
            getWebViewParent().addView(mCustomView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
            mVideoCallback = cb;
        }
    }

    @Override
    public void onHideCustomView() {
        super.onHideCustomView();
        if (mVideoView == null) {
            return;
        }

        mWebView.setVisibility(View.VISIBLE);
        mCustomView.setVisibility(View.GONE);
        mVideoView.setVisibility(View.GONE);

        mCustomView.removeView(mVideoView);
        getWebViewParent().removeView(mCustomView);

        mVideoCallback.onCustomViewHidden();

        mVideoView = null;
    }

问题

问题没有解决,似乎没有任何改变。调试器上的以下堆栈跟踪显示: - 参数的(唯一的) child View v没有专注 - 视频 View 的类是 FullScreenView , 属于 Android chromium。

解决此问题的建议解决方案是什么?谢谢。

最佳答案

解决方案已正确发布在这里: Webview and iFrame Video full screen issue

基本上,问题在于 VideoView 不应位于 WebView 的同一层次结构或 subview 层次结构中。在 Java 中快速实现 onShowCustomView 如下所示:

mVideoView.setLayout(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
mVideoView.setVisibility(View.VISIBLE);
webViewRoot.addView(mVideoView);
webViewDirectParent.setVisibility(View.GONE);

关于Android WebView 仅显示黑屏,iframe 中包含全屏视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54953762/

相关文章:

使用 jquery 更新 iframe 时,iframe 中的 javascript 不起作用

Android ListView 页脚 View

Java 将 JSONObject 转换为 URL 参数

header 中的 jQuery Mobile 下拉菜单不起作用

jquery - 删除输入字段的部分值

javascript - iframe 上的事件 "load"成功触发,但无法定位 iframe

javascript - 是否可以在 iFrame 中使用 JavaScript 获取 iFrame 父页面的 referrer?

android - 网站页脚在我的移动设备上不稳定

android - 应用程序在模拟器上运行但不在真实设备上

javascript - 如何为边框设置动画,使其从头到尾缓慢显示