首页 > 解决方案 > 使用 DialogFragment 显示黑屏的 iframe Youtube 视频,并且在 Webview 中仅播放音频

问题描述

我在对话框片段中使用 JSON 解析 iframe youtube 链接数据到 Webview。视频输出显示黑屏,仅播放视频的音频。我曾尝试在清单文件中使用 (android:hardwareAccelerated="true") 以及在 java 代码中以编程方式使用,但它对我不起作用。

如果我在 Activity 中使用 Same 而不是 DialogFragment,那么我将获得视频的输出结果,并且一切正常,但由于某种原因,我只需要在 DialogFragment 中播放 youtube 视频。如何做到这一点请帮忙,这是我的代码。

public class Activity extends DialogFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment, container, false);

        String frameVideo = "<html><body>Youtube video .. <br> <iframe width="320" height="315" src="https://www.youtube.com/embed/lY2H2ZP56K4" frameborder="0" allowfullscreen></iframe></body></html>";

        WebView mwebView = view.findViewById(R.id.webView);
        mwebView.setWebChromeClient(new WebChromeClient() {
            });
        displayVideo.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
            }
        });
        mwebView.getSettings().setAppCachePath(getActivity().getCacheDir().getAbsolutePath());
            mwebView.getSettings().setJavaScriptEnabled(true);
            mwebView.getSettings().setAllowFileAccess(true);
            mwebView.getSettings().setAppCacheEnabled(true);
       //   mwebView.setInitialScale(1);
       //   mwebView.getSettings().setUseWideViewPort(true);


           if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) {

           mwebView.getSettings().setPluginState(WebSettings.PluginState.ON);
            }
          mwebView.getSettings().setLoadWithOverviewMode(true);

         mwebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        mwebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        mwebView.loadData(frameVideo, "text/html", "utf-8");
    }

标签: javaandroidandroid-studioandroid-fragments

解决方案


我检查了你的代码,没问题。我评论setLayerType了财产并检查了。它工作正常。只是评论mwebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);


推荐阅读