1

在我的 Android 应用程序中,我使用的是带有 downloadListener 的 WebView。我想访问一个 Intranet 站点,当单击一个链接时,使用 mimetype 信息决定如何处理该文件。

问题在于引用图像文件(png、jpg 等)的链接。他们没有触发侦听器,而是在新页面中自动显示文件,跳过侦听器。

我怎样才能改变这种行为?

我的代码没什么特别的...

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    webview = (WebView)findViewById(R.id.webview);
    webview.setWebViewClient(new MiWebClient());
    webview.setDownloadListener(oyenteDescarga);

    //...other onCreate stuff... nothing relevant
}

DownloadListener oyenteDescarga = new DownloadListener()
{
    @Override
    public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) 
    {
      //...I want to use mimetype here, but this listener is not triggered when I click an image, an example:
      Toast.makeText(getBaseContext(), "URL:" + url, Toast.LENGTH_SHORT).show(); //it doesn't show when i click a link referencing an image
    }
};

MiWebClient 是一个扩展 WebViewClient 的类

public class MiWebClient extends WebViewClient
{
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    {
        view.loadUrl(url);
        return true;
    }
}
4

1 回答 1

1

根据文档

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

由于图像可以由渲染引擎处理,因此它不会下载它,因此不会调用下载管理器。

于 2013-04-01T17:44:41.650 回答