2012-06-02 57 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);