androidwebviewyoutubeembedplaying

android application : playing youtube video embed on webview


I read several task on my problem but I don't know how to go. I have webview with youtube video embed. When I click, I have the sound but not the video. I add this :

content.setWebChromeClient(new WebChromeClient() {});

but it doesn't work !

This is my webview :

    content = new WebView(this);
    content.setLayoutParams(new FrameLayout.LayoutParams(
            ViewGroup.LayoutParams.FILL_PARENT,
            ViewGroup.LayoutParams.FILL_PARENT,
            Gravity.CENTER
    ));
    content.setHorizontalScrollBarEnabled(false);
    content.setVerticalScrollBarEnabled(false);
    content.getSettings().setJavaScriptEnabled(true);
    content.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    content.getSettings().setBuiltInZoomControls(false);
    content.getSettings().setSupportZoom(true);
    content.getSettings().setUseWideViewPort(true);
    content.getSettings().setPluginsEnabled(true);
    content.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
    content.getSettings().setSavePassword(true);
    content.getSettings().setSaveFormData(true);
    content.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

    content.setWebChromeClient(new WebChromeClient() {

    });
    content.setWebViewClient(new WebViewClient() {
        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            close();
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            view.setVisibility(View.VISIBLE);
            showLayout();
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            Uri overrideUrl = null;
            Uri currentUrl = Uri.parse(url);
            if (data.getFormat().equals(Format.IMAGE)) {
            ...
            }
            if (overrideUrl != null) {
                Intent browser = new Intent(Intent.ACTION_VIEW);
                browser.setData(overrideUrl);
                startActivity(browser);
                return false;
            }
            view.loadUrl(url);
            return true;
        }
    });

    layout.addView(content);
    content.loadData(data.getHtml(), "text/html", "UTF-8");

Solution

  • add this in your manifest

    <application android:hardwareAccelerated="true" ... />