17

我正在访问一个包含 .pdf 文档的网站。如果我通过网络浏览器打开该文档,它就会开始下载它。如果我通过 webview 打开它,什么也不会发生。我需要对 webview 应用什么设置才能开始下载?

我已经有了这个。

wvA.setDownloadListener(new DownloadListener()
{
    public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType,
                    long size)
    {
        Intent viewIntent = new Intent(Intent.ACTION_VIEW);
        viewIntent.setDataAndType(Uri.parse(url), mimeType);

        try
        {
            startActivity(viewIntent);
        }
        catch (ActivityNotFoundException ex)
        {
        }
    }
});
4

2 回答 2

26

实现一个下载监听器来处理任何类型的下载:

webView.loadUrl(uriPath);

webView.setDownloadListener(new DownloadListener() {
    @Override
    public void onDownloadStart(String url, String userAgent,
            String contentDisposition, String mimetype,
            long contentLength) {

        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
    }
});
于 2013-10-02T17:08:50.490 回答
19

您应该创建 WebViewClient 并将其设置为您的 webview。每次单击链接时,都会调用WebViewClient 的shouldOverrideUrlLoading方法。检查 url 指向 pdf 文件并做你想做的事。例如,您可以查看 pdf。

webView.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading (WebView view, String url) {
        if (url.endsWith(".pdf")) {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            // if want to download pdf manually create AsyncTask here
            // and download file
            return true;
        }
        return false;
    }
});
于 2013-01-07T18:25:20.713 回答