我有一个使用 Android 的 DownloadManager 将文件下载到外部文件存储(SD 卡)上的文件夹的应用程序。这通常可以正常工作,但有一些来源会导致 DownloadManager 在完成下载文件时将其丢弃。源文件的一个很好的例子是:

http://traffic.libsyn.com/hdtvpodcast/HDTV-2012-06-01.mp3

看起来问题可能只是来自 libsyn.com 的文件,但我并不乐观。我四处寻找更改 DownloadManager 处理保存文件方式的方法,但在类中找不到任何选项。

这是我将 URL 放入队列以供下载的地方:

request = new Request(Uri.parse(currUrl));
external = Uri.fromFile(externalFile);
request.setDestinationUri(external);
request.setVisibleInDownloadsUi(false);
request.setNotificationVisibility(
    DownloadManager.Request.VISIBILITY_HIDDEN);
currDownloadId = dm.enqueue(request);

文件位置是使用以下方法创建的:
Environment.getExternalStorageDirectory().getAbsolutePath() +
    File.separator + "Podcatcher" + File.separator + "Feeds" + File.separator +
    [int] + File.separator + [int] + [string extension];

当我从 DownloadManager 查询 DownloadManager.COLUMN_LOCAL_FILENAME 列时,结果是这样的:
/mnt/sdcard/Podcatcher/Feeds/19/225.mp3

大多数文件都很好并且在下载后仍然存在,但在这种情况下则不然。关于如何强制 DownloadManager 在下载文件后离开文件的任何想法?

编辑:我忽略了当我从浏览器下载此文件时使用独立的下载管理器时,它报告在下载结束时失败。也许我唯一的解决方案是从头开始下载它,没有下载管理器?

最佳答案

尝试请遵循代码 - 为我工作:

request.setMimeType(application/octet-stream);

10-07 19:12
查看更多