在我尝试创建通过 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>
如何调用它需要做什么?我错过了什么?
答案 0 :(得分:6)
setDownloadListener会设置侦听器。
注册渲染引擎无法处理内容时要使用的接口,应该下载。这将取代当前的处理程序。
webview使用WebKit渲染引擎,我相信可以(或者认为它可以)处理html5,这样就不会调用侦听器。