我有一个应用程序,使用Android的DownloadManager将文件下载到外部文件存储(SD卡)上的文件夹。这通常可以正常工作,但有一些来源会导致DownloadManager在完成下载文件时垃圾文件。源文件的一个很好的例子是:DownloadManager在完成时删除文件
http://traffic.libsyn.com/hdtvpodcast/HDTV-2012-06-01.mp3
看起来也许这个问题只有从libsyn.com文件,但我还不能肯定。我查看了各种方法来更改DownloadManager处理保存文件的方式,但无法在该类中找到任何选项。
这是我排队等待下载的网址:
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.COLUMN_LOCAL_FILENAME来自DownloadManager的列:
/mnt/sdcard/Podcatcher/Feeds/19/225.mp3
大部分文件在下载之后,它们都很好并且坚持下来,但在这种情况下不会。关于如何强制DownloadManager在下载文件后离开文件的任何想法?
编辑:我忽略提及,当我使用独立的下载管理器从浏览器下载此文件时,它在下载结束时报告失败。也许我唯一的解决方案是从头开始下载,没有DownloadManager?
也许尝试'dm.query()'和'检查和COLUMN_STATUS''COLUMN_REASON'列可能出现的错误? –
我每次检查状态并相应更新数据库时都这样做。不幸的是,我什么也看不到。由于这个原因,看起来像DownloadManager中的一个bug对我来说,我想我不得不放弃使用它来确保下载一切。我还没有尝试过,但是我会看到最后是否有同样的失败。 –
对不起,我的意思是0。当下载“完成”时,状态为8(成功)。 –