在我的WebView中,有几个间接下载链接看起来像https://www.example.com/download/1234
。当我在计算机浏览器上打开链接时,它会下载PDF文件。当我点击WebView上的链接时,它不会下载。
因此,我将下载监听器设置为我的webview,而在onDownloadStart中,我使用startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
启动浏览器,浏览器开始下载PDF文件。除非我按下电话后退按钮,否则浏览器会停留在那里。
如何在下载开始后自动关闭浏览器并返回应用程序?
答案 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);