2017-01-13 3 views
1

Пользователь должен загрузить несколько файлов, которые начинаются с нажатия кнопки. Код проверяет, существует ли файл, если нет, то он добавляет его в очередь загрузки. Я добавляю все несуществующие файлы в очередь загрузки.Как проверить, находится ли файл в очереди загрузчика?

Но если пользователь снова нажимает на кнопку, файлы снова добавляются в очередь загрузки. Итак, как проверить, добавлен ли файл в очередь диспетчера загрузки? Если он будет добавлен, файл не будет повторно добавлен.

+0

каждый раз вы запрашиваете скачать вы получите уникальный идентификатор обратно, вы можете хранить идентификаторы, а затем проверить с помощью ' getUriForDownloadedFile', если файл уже находится в очереди –

+0

, он говорит: 'getUriFodDownloadedFile' работает только для успешно загруженного файла. Я хочу получить список файлов в очереди. – suku

+0

хорошо, вы всегда можете его поддерживать, не так ли? он не даст вам доступ к файлам, загруженным другими приложениями в любом случае –

ответ

1

вы должны использовать DownloadManager.Query

Вот пример вы можете обратиться Download manager example

образец кода

DownloadManager.Query query = null; 
Cursor c = null; 
DownloadManager downloadManager = null; 
downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE); 
query = new DownloadManager.Query(); 
if(query!=null) { 
      query.setFilterByStatus(DownloadManager.STATUS_FAILED|DownloadManager.STATUS_PAUSED|DownloadManager.STATUS_SUCCESSFUL| 
        DownloadManager.STATUS_RUNNING|DownloadManager.STATUS_PENDING); 
     } else { 
      return; 
     } 
c = downloadManager.query(query); 
if(c.moveToFirst()) { 
int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS)); 
switch(status) { 
case DownloadManager.STATUS_PAUSED: 
break; 
case DownloadManager.STATUS_PENDING: 
break; 
case DownloadManager.STATUS_RUNNING: 
break; 
case DownloadManager.STATUS_SUCCESSFUL: 
break; 
} 
} 
Смежные вопросы