gpt4 book ai didi

android-intent - 如何直接从 Android WebView 触发文件下载,以便经过身份验证的用户不必再次登录?

转载 作者:行者123 更新时间:2023-12-02 03:56:25 24 4
gpt4 key购买 nike

用户通过 WebView 登录到我的应用程序内的移动页面。我正在使用以下代码从 WebView 请求中捕获可下载资源并将其作为意图传递:

webView.setDownloadListener(new DownloadListener() {

public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});

在模拟器中,这实际上打开了Android浏览器, 然后要求用户再次登录 ,然后它开始下载文件。

有没有办法可以直接从我的 WebView 触发下载,这样用户就不必再次登录?默认情况下,如果不添加此 DownloadListener,则什么也不会发生。

理想情况下,一旦文件被下载,我想对文件触发一个意图,所以如果用户有一个 PDF 查看器,它会立即切换到它。

最佳答案

我通过实现下载监听器和传递 cookie 来解决这个问题:

this.setDownloadListener(new DownloadListener() {

public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype,
long len) {
if ( null != url && (url.endsWith(".pdf") || url.endsWith(".pptx"))) {
Uri source = Uri.parse(url);
int lastSEP = url.lastIndexOf("//");
String DL_to_filename = url.substring( lastSEP+1 );
DownloadManager.Request request = new DownloadManager.Request(source);
request.setDescription("requested " + url +" downloading");
request.setTitle(DL_to_filename);
String cookies = CookieManager.getInstance().getCookie(url);
request.addRequestHeader("cookie", cookies);
request.addRequestHeader("User-Agent", userAgent);
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, DL_to_filename);
request.setVisibleInDownloadsUi(true);
request.setMimeType(mimetype);

DownloadManager manager = (DownloadManager) getContext().getSystemService(Context.DOWNLOAD_SERVICE);

manager.enqueue(request);
}
}
});

关于android-intent - 如何直接从 Android WebView 触发文件下载,以便经过身份验证的用户不必再次登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12392188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com