kin*_*ite 2 android download webview
我尝试从网页下载 PDF 文件。但是当我这样做时,我最终只得到一个 HTML 文件,因为登录不能用于下载。
我尝试加载的链接如下所示:
https://somePage.de/auth/1%3A1%3A1026071014%3A3%3A0%3Aserv%3Ax/aufgaben/aufgabe3.pdf
解决后应该是这样的:
https://somePage.de/auth/1:1:1:122452345:4:4:serv:x/aufgaben/aufgabe3.pdf
下载由下载管理器完成:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Toast.makeText(getActivity(), url, Toast.LENGTH_LONG).show();
if (url.contains(".pdf")) {
Request request = new Request(Uri.parse(url));
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(
Environment.DIRECTORY_DOWNLOADS, url.substring(url.lastIndexOf("/", url.length())));
_DownloadManager.enqueue(request);
} else
view.loadUrl(url);
return true;
}
Run Code Online (Sandbox Code Playgroud)
有什么我想念的吗?也许 WebView 中的某种配置?
好的,我终于找到了解决方案。问题是,下载管理器没有来自 web 视图的登录状态。对此的解决方案是向请求提供您的 cookie。这里的代码(只有两行):
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Toast.makeText(getActivity(), url, Toast.LENGTH_LONG).show();
if (url.contains(".pdf")) {
String cookie = CookieManager.getInstance().getCookie(url);
Request request = new Request(Uri.parse(url));
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(
Environment.DIRECTORY_DOWNLOADS, url.substring(url.lastIndexOf("/", url.length())));
request.addRequestHeader("Cookie", cookie);
_DownloadManager.enqueue(request);
} else
view.loadUrl(url);
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1698 次 |
| 最近记录: |