【问题标题】:Android - Jelly Bean - YouTube play video only onceAndroid - Jelly Bean - YouTube 只播放一次视频
【发布时间】:2013-12-14 13:39:46
【问题描述】:

我正在使用 WebView 在我的 Android 应用中播放 YouTube 视频。 它工作得很好,但我似乎对 Jelly Bean 有问题(可能还有更高版本,我还不知道)。

我第一次播放视频时效果很好,但是当我尝试再次播放它甚至是另一个视频时,关闭 WebView 并重新打开它后,我看到视频正在加载,但是然后进入暂停模式(如附图所示)。

关闭 WebView 时,我正在使用此代码,我认为这是问题的原因:

Class.forName("android.webkit.WebView").getMethod("onPause", (Class[]) null).invoke(webview, (Object[]) null);

有人遇到过这个问题吗?

左图 - 视频正常播放。

中间图片 - 尝试再次加载。

正确的图像 - 视频已暂停并且从未开始。

这是我正在使用的代码:

private void loadUrl() 
{
        progress.setVisibility(View.VISIBLE);
        webview.setWebChromeClient(new WebChromeClient());

        if (Build.VERSION.SDK_INT < 8) {
            webview.getSettings().setPluginsEnabled(true);
        } else {
            webview.getSettings().setPluginState(PluginState.ON);
        }

        WebSettings webSettings = webview.getSettings();
        webSettings.setJavaScriptEnabled(true);


        webview.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView wView, String url)
            {
                progress.setVisibility(View.VISIBLE);
                webview.loadUrl(url);
                isLoading = true;
                return true;
            }

            @Override
            public void onPageStarted (WebView view, String url, android.graphics.Bitmap favicon)
            {
                progress.setVisibility(View.VISIBLE);
            }

            @Override
            public void onReceivedError (WebView view, int errorCode, String description, String failingUrl)
            {
                progress.setVisibility(View.GONE);
                isLoading = false;
            }

            @Override
            public void onPageFinished (WebView view, String url)
            {
                progress.setVisibility(View.GONE);
                isLoading = false;
            }
        });

        webview.loadUrl(url);
 }

【问题讨论】:

    标签: android webview youtube


    【解决方案1】:

    我通过清除/销毁 webview 解决了这个问题:

             if (webview != null)
             {
                 if (isLoading)
                 { 
                        webview.stopLoading();
                 }
    
                 webview.clearCache(true);
                 webview.clearView();
                 webview.freeMemory();
                 webview.destroy();  
             }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 2012-12-14
      • 2014-04-08
      相关资源
      最近更新 更多