From f8adef2a9e6b08f9f2cc7443ed28c84cd0338903 Mon Sep 17 00:00:00 2001 From: frank wang <425294756@qq.com> Date: Thu, 30 Oct 2025 16:58:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/pxkj/jwzs/FirstActivity.java | 98 +++++++++---------- 1 file changed, 46 insertions(+), 52 deletions(-) diff --git a/app/src/main/java/com/pxkj/jwzs/FirstActivity.java b/app/src/main/java/com/pxkj/jwzs/FirstActivity.java index 391c03d..cc87306 100644 --- a/app/src/main/java/com/pxkj/jwzs/FirstActivity.java +++ b/app/src/main/java/com/pxkj/jwzs/FirstActivity.java @@ -262,50 +262,52 @@ public class FirstActivity extends BaseActivity { private long currentDownloadId = -1; // 保存当前下载任务ID private void downloadFile(String url) { - try { - if (TextUtils.isEmpty(url)) { - Toast.makeText(this, "下载地址为空", Toast.LENGTH_SHORT).show(); - return; + new Thread(() -> { + try { + if (TextUtils.isEmpty(url)) { + Toast.makeText(this, "下载地址为空", Toast.LENGTH_SHORT).show(); + return; + } + + if (url.startsWith("blob:") || url.startsWith("data:")) { + Toast.makeText(this, "无法直接下载 Blob 文件,请检查前端下载逻辑", Toast.LENGTH_SHORT).show(); + return; + } + + Uri uri = Uri.parse(url); + DownloadManager.Request request = new DownloadManager.Request(uri); + + String fileName = URLUtil.guessFileName(url, null, null); + request.setTitle(fileName); + request.setDescription("正在下载文件..."); + request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); + request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName); + request.allowScanningByMediaScanner(); + request.addRequestHeader("User-Agent", System.getProperty("http.agent")); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + request.setRequiresCharging(false); + request.setAllowedOverMetered(true); + request.setAllowedOverRoaming(true); + } + + String mimeType = getMimeTypeForUrl(url); + request.setMimeType(!TextUtils.isEmpty(mimeType) ? mimeType : "application/octet-stream"); + + DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); + if (dm != null) { + Toast.makeText(this, "文件已开始下载,请等待", Toast.LENGTH_SHORT).show(); + currentDownloadId = dm.enqueue(request); + startDownloadProgressMonitor(dm, currentDownloadId); + } else { + Toast.makeText(this, "系统下载服务不可用", Toast.LENGTH_SHORT).show(); + } + + } catch (Exception e) { + e.printStackTrace(); + Toast.makeText(this, "下载失败: " + e.getMessage(), Toast.LENGTH_SHORT).show(); } - - if (url.startsWith("blob:") || url.startsWith("data:")) { - Toast.makeText(this, "无法直接下载 Blob 文件,请检查前端下载逻辑", Toast.LENGTH_SHORT).show(); - return; - } - - Uri uri = Uri.parse(url); - DownloadManager.Request request = new DownloadManager.Request(uri); - - String fileName = URLUtil.guessFileName(url, null, null); - request.setTitle(fileName); - request.setDescription("正在下载文件..."); - request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); - request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName); - request.allowScanningByMediaScanner(); - request.addRequestHeader("User-Agent", System.getProperty("http.agent")); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - request.setRequiresCharging(false); - request.setAllowedOverMetered(true); - request.setAllowedOverRoaming(true); - } - - String mimeType = getMimeTypeForUrl(url); - request.setMimeType(!TextUtils.isEmpty(mimeType) ? mimeType : "application/octet-stream"); - - DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); - if (dm != null) { - Toast.makeText(this, "文件已开始下载,请等待", Toast.LENGTH_SHORT).show(); - currentDownloadId = dm.enqueue(request); - startDownloadProgressMonitor(dm, currentDownloadId); - } else { - Toast.makeText(this, "系统下载服务不可用", Toast.LENGTH_SHORT).show(); - } - - } catch (Exception e) { - e.printStackTrace(); - Toast.makeText(this, "下载失败: " + e.getMessage(), Toast.LENGTH_SHORT).show(); - } + }).start(); } /** @@ -553,15 +555,6 @@ public class FirstActivity extends BaseActivity { } } - // ✅ 供前端调用的文件选择方法 - @JavascriptInterface - public void previewFile(String url) { - FirstActivity activity = activityRef.get(); - if (activity != null && !TextUtils.isEmpty(url)) { - activity.runOnUiThread(() -> activity.previewFile(url)); - } - } - // ✅ 供前端调用的文件选择方法 @JavascriptInterface public void setToken(String token) { @@ -570,6 +563,7 @@ public class FirstActivity extends BaseActivity { activity.runOnUiThread(() -> activity.setToken(token)); } } + @JavascriptInterface public void showLog(String message) { FirstActivity activity = activityRef.get();