2012-06-02 8 views
2

У меня есть приложение, которое загружает файлы с помощью Android DownloadManager в папку на внешнем хранилище файлов (SD-карта). Это нормально работает нормально, но есть некоторые источники, которые заставляют DownloadManager удалять файл, когда он завершает его загрузку. Хороший пример исходного файла: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.COLUMN_LOCAL_FILENAME column from DownloadManager:

/mnt/sdcard/Podcatcher/Feeds/19/225.mp3 

Основная часть файла s прекрасны и сохраняются после загрузки, но не в этом случае. Любые идеи о том, как я могу заставить DownloadManager оставить файл после его загрузки?

EDIT: Я забыл упомянуть, что при использовании автономного диспетчера загрузки при загрузке этого файла из браузера, который он сообщает, не удалось в конце загрузки. Возможно, мое единственное решение - загрузить его с нуля, без DownloadManager?

+0

Может быть, попробовать 'dm.query()' и проверить '' COLUMN_STATUS' и COLUMN_REASON' столбцы для возможных ошибок? –

+0

Я делаю это каждый раз, когда проверяю статус и соответствующим образом обновляю базу данных. К сожалению, я не вижу ничего, кроме 0. Из-за этого, что кажется ошибкой в ​​DownloadManager для меня, я думаю, что мне нужно будет использовать его, чтобы все было загружено. Я еще не пробовал это с нуля, но я посмотрю, имеет ли тот же самый отказ в конце. –

+0

Извините, я имел в виду 0 по причине. Состояние «8» (успешное), когда загрузка «завершается». –

ответ

1

попробовать, пожалуйста, а затем код - работал для меня:

request.setMimeType(application/octet-stream);