2013-04-14 3 views
2

Итак, я использую диспетчер загрузки для загрузки нескольких файлов в свое приложение. Мне нужны эти файлы, чтобы закончить загрузку, прежде чем запускать определенную деятельность. Как я могу проверить, есть ли активные загрузки, поэтому я могу сказать пользователю дождаться завершения загрузки. И затем, когда они закончатся, мне нужно сделать кнопку видимой. Я искал это, даже сам пробовал код (слепо), и ничего не работает. Если кто-то может подтолкнуть меня в правильном направлении, я был бы благодарен.Проверьте, активны ли загрузки

ответ

6

Используйте query(), чтобы узнать о загрузках. Когда вы вызываете enqueue(), возвращаемое значение является идентификатором для загрузки. Вы можете запросить по статусу, а также:

Cursor c = downloadManager.query(new DownloadManager.Query() 
     .setFilterByStatus(DownloadManager.STATUS_PAUSED 
       | DownloadManager.STATUS_PENDING 
       | DownloadManager.STATUS_RUNNING)); 

Чтобы получать уведомления, когда загрузка закончена, зарегистрировать BroadcastReceiver для ACTION_DOWNLOAD_COMPLETE:

BroadcastReceiver onComplete = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // do something 
    } 
}; 

registerReceiver(onComplete, new IntentFilter(
     DownloadManager.ACTION_DOWNLOAD_COMPLETE)); 

Обратите внимание, что вы также должны слушать для ACTION_NOTIFICATION_CLICKED вещания, чтобы знать, когда пользователь щелкнул уведомление о запущенной загрузке.