DownloadListener.onDownloadStart()从未调用过

时间:2011-04-27 00:19:47

标签: android html5 webview android-webview

在我尝试创建通过 HTML5 播放YouTube视频的WebView(并且不是通过Flash)时,我尝试逐字实施this article我的活动是onCreate():

  WebView webView = (WebView) findViewById(R.id.embeddedWebView);
  webView.setDownloadListener(new DownloadListener()
  {
    public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long size)
    {
      Log.v("TAG", "url: " + url + ", mimeType: " + mimeType);

      Intent viewIntent = new Intent(Intent.ACTION_VIEW);
      viewIntent.setDataAndType(Uri.parse(url), mimeType);

      try
      {
        startActivity(viewIntent);
      }
      catch (ActivityNotFoundException ex)
      {
        Log.w("YourLogTag", "Couldn't find activity to view mimetype: " + mimeType);
      }
    }
  });  

由于某些原因没有调用它,所以注意到我的代码中没有任何地方指定“implements DownloadListener”,我将其重新实现为一个单独的类,定义为

public class MyDownloadListener implements DownloadListener 

并实现onDownloadStart(),如上所述(将活动作为参数传递,以便它可以调用startActivity()。然后在onCreate()中,我只是这样做:

mDownloadListener = new MyDownloadListener(this);
mWebView.setDownloadListener(mDownloadListener);

我在http://broken-links.com/tests/video/上的YouTube 上再次尝试过,我仍然没有在LogCat中看到任何追踪onDownloadStart()的痕迹。< / p>

如何调用它需要做什么?我错过了什么?

1 个答案:

答案 0 :(得分:6)

当WebView认为渲染引擎无法处理内容时,

setDownloadListener会设置侦听器。

  

注册渲染引擎无法处理内容时要使用的接口,应该下载。这将取代当前的处理程序。

webview使用WebKit渲染引擎,我相信可以(或者认为它可以)处理html5,这样就不会调用侦听器。