如何从Android WebView启动下载链接后自动关闭浏览器?

时间:2015-05-13 03:33:16

标签: android browser webview

在我的WebView中,有几个间接下载链接看起来像https://www.example.com/download/1234。当我在计算机浏览器上打开链接时,它会下载PDF文件。当我点击WebView上的链接时,它不会下载。

因此,我将下载监听器设置为我的webview,而在onDownloadStart中,我使用startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

启动浏览器,浏览器开始下载PDF文件。除非我按下电话后退按钮,否则浏览器会停留在那里。

如何在下载开始后自动关闭浏览器并返回应用程序?

2 个答案:

答案 0 :(得分:0)

我们无法在下载开始后自动关闭浏览器,除非 浏览器为我们提供接口。 下载你得到的文件的原因是0KB不是没有扩展名的文件。因为你只是从http响应消息的http响应内容下载数据,这没什么可扩展的。 因此,使用DownloadManager时会出现另一个问题。

答案 1 :(得分:0)

尝试使用下载管理器强制下载:使用此代码希望它能为您提供帮助:

public void onDownloadStart(String aUrl, String userAgent, String contentDisposition, String mimetype, long contentLength) {    
                    fileName = URLUtil.guessFileName(aUrl, contentDisposition, mimetype); //returns a string of the name of the file THE IMPORTANT PART
                    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(aUrl));
                    request.allowScanningByMediaScanner();
                    CookieManager cookieManager = CookieManager.getInstance();
                    String cookie = cookieManager.getCookie(aUrl);
                    request.addRequestHeader("Cookie", cookie);
                    request.setMimeType("application/pdf");
                    request.addRequestHeader("User-Agent", userAgent);
                    Environment.getExternalStorageDirectory();
                    getActivity().getApplicationContext().getFilesDir().getPath(); //which returns the internal app files directory path
                    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName);
                    DownloadManager dm = (DownloadManager)getActivity(). getSystemService(DOWNLOAD_SERVICE);
                    dm.enqueue(request);