我希望你一切都好,感谢你阅读本文。 几天前我开始在 Android Studio 中进行开发,我试图从互联网上下载一个 zip 文件,经过几个小时的研究后我还没有能够做到这一点。 我从 DownloadManager 收到有关文件目标路径的错误,您可以在下面查看详细信息。
以下是下载文件方法的代码:
//The method is called by a foreground service, I tried to call it inside the MainActivity, but it doesn't work either
private static void DownloadFile(String fileUrl, Service service){
Log.w("Utility", "martinPrank, DownloadFile invoked from service, fileUrl: "+fileUrl);
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(fileUrl));
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI);
request.setTitle("Download");
request.setDescription("Download file di sistema in corso...");
String[] urlWordArray = fileUrl.split("/");
String fileName = urlWordArray[urlWordArray.length-1];
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName);
DownloadManager downloadManager = (DownloadManager) service.getSystemService(Context.DOWNLOAD_SERVICE);
downloadManager.enqueue(request);
Log.w("Utility", "martinPrank, The download of the file should start!");
}
这是Android Studio的Logcat:
2023-12-12 19:36:48.363 1998-2117 Utility com.patrickcreations.myapplication W martinPrank, DownloadFile invoked from service, fileUrl: https://www.trentinotrasporti.it/opendata/google_transit_urbano_tte.zip
2023-12-12 19:36:48.370 1463-1679 ActivityManager pid-1463 I Changes in 10074 10 to 3, 0 to 8
2023-12-12 19:36:48.425 5835-7230 DownloadManager pid-5835 W Path appears to be invalid: /storage/emulated/0/Download/google_transit_urbano_tte.zip
2023-12-12 19:36:48.477 1463-1679 ConnectivityManager pid-1463 D StackLog: [android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4191)] [android.net.ConnectivityManager.registerDefaultNetworkCallbackForUid(ConnectivityManager.java:4755)] [com.android.server.job.controllers.ConnectivityController.registerPendingUidCallbacksLocked(ConnectivityController.java:856)] [com.android.server.job.controllers.ConnectivityController.maybeRegisterDefaultNetworkCallbackLocked(ConnectivityController.java:830)] [com.android.server.job.controllers.ConnectivityController.updateConstraintsSatisfied(ConnectivityController.java:1045)] [com.android.server.job.controllers.ConnectivityController.maybeStartTrackingJobLocked(ConnectivityController.java:263)] [com.android.server.job.JobSchedulerService.startTrackingJobLocked(JobSchedulerService.java:1754)] [com.android.server.job.JobSchedulerService.scheduleAsPackage(JobSchedulerService.java:1233)] [com.android.server.job.JobSchedulerService$JobSchedulerStub.scheduleAsPackage(JobSchedulerService.java:3167)] [android.app.job.IJobScheduler$Stub.onTransact(IJobScheduler.java:181)]
2023-12-12 19:36:48.477 1463-1679 ConnectivityService pid-1463 D requestNetwork for uid/pid:1000/1463 asUid: 11154 activeRequest: null callbackRequest: 4061 [NetworkRequest [ REQUEST id=4062, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 11154 RequestorUid: 1000 RequestorPkg: android UnderlyingNetworks: Null] ]] callback flags: 0 order: 2147483647
2023-12-12 19:36:48.478 1463-1757 ConnectivityService pid-1463 D accepting network in place of null
2023-12-12 19:36:48.480 1998-2117 Utility com.patrickcreations.myapplication W martinPrank, The download of the file should start!
更新:我从 Logcat 中看到一个新错误:
2023-12-12 19:36:48.726 5835-2154 DownloadManager pid-5835 W [1414] Stop requested with status HTTP_DATA_ERROR: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
2023-12-12 19:36:48.727 5835-2154 DownloadManager pid-5835 D [1414] Finished with status WAITING_TO_RETRY
2023-12-12 19:36:48.727 5835-2154 DownloadManager pid-5835 V MIME Type = null
问题实际上是网站的信任锚,我尝试从另一个网站下载pdf,它有效!
所以问题出在我试图从右侧获取 zip 的服务器?
也可以尝试添加 mime-type 并且它的 URL 需要任何标头进行授权,也尝试添加这些标头 确保完整名称和扩展名