目前我正在尝试在我的 Webview 中显示一些“动态”PDF 文件。 这些 PDF 是从数据库加载并“流式传输”浏览器的,这在所有 PC 浏览器甚至 Android 浏览器中都可以正常工作。 我尝试了“content-type: application/pdf”甚至“application/octet-stream”,但两者都给出了相同的结果。
我尝试使用 HttpClient 和 HttpURLConnection 下载 PDF,但我尝试了 getContentLength();和 getInputStream();一直说只有100B。
因此,当我启动 PDF Intent 时,Android 会告诉我它不是正确的 PDF 文件。
仅当我使用 downloadListener 并将 URL 放入 Intent 中(无需先下载)时,Webview 才会打开默认浏览器,并立即自动开始下载。
所以我呈现 PDF 的方式似乎有效。但我尝试从 URL 获取流的方式却没有。
关于这个主题的大量问题,遗憾的是很少有正确/有效的答案......
亲切的问候!
编辑:URL 不是 www.xxx.com/file.pdf,而是 www.xxx.com/file.php?id=12345 因此,当我在移动浏览器中打开 URL 时,浏览器开始下载它,但我的 Web View 中的下载代码似乎只能看到/查找文件。
最佳答案
终于找到解决办法了! 我需要从 WebView 传递身份验证 cookie!
因此添加以下代码解决了我的问题;
String cookie = CookieManager.getInstance().getCookie(url.toString());
if (cookie != null) connection.setRequestProperty("cookie", cookie);
关于android - Webview下载PDF到手机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13519997/