2012-06-02 61 views
2

我有一个应用程序,使用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?

+0

也许尝试'dm.query()'和'检查和COLUMN_STATUS''COLUMN_REASON'列可能出现的错误? –

+0

我每次检查状态并相应更新数据库时都这样做。不幸的是,我什么也看不到。由于这个原因,看起来像DownloadManager中的一个bug对我来说,我想我不得不放弃使用它来确保下载一切。我还没有尝试过,但是我会看到最后是否有同样的失败。 –

+0

对不起,我的意思是0。当下载“完成”时,状态为8(成功)。 –

回答

1

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

request.setMimeType(application/octet-stream);