2009-02-08 2 views
24

Мне было интересно, что такое намерение для загрузки URL-адресов? В браузере он загрузит материал с небольшим значком уведомления. Мне было интересно, смогу ли я использовать это намерение (и что это такое).Android Скачать Intent

+0

Я честно понятия не имею, что вы просите здесь, пожалуйста, уточните. –

+0

Чтобы пересмотреть этот старый вопрос - это личное намерение. Посмотрите на DownloadManager в AOSP. –

+0

Есть ли у вас какие-либо ссылки/руководства/источник о том, как вызвать этот DownloadManager? И, поскольку он частный, поэтому он не используется для нас, вы нашли какую-то альтернативу в том, как загрузить файл? – TiGer

ответ

58

Приложения могут загружать файлы с помощью диспетчера загрузки так же, как браузер и gmail. Это доступно, начиная с Gingerbread.

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

Вот как вы можете скачать URI:

DownloadManager.Request r = new DownloadManager.Request(uri); 

// This put the download in the same Download dir the browser uses 
r.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "fileName"); 

// When downloading music and videos they will be listed in the player 
// (Seems to be available since Honeycomb only) 
r.allowScanningByMediaScanner(); 

// Notify user when download is completed 
// (Seems to be available since Honeycomb only) 
r.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 

// Start download 
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
dm.enqueue(r); 

Есть куча других вариантов для настройки уведомлений, запросов загрузки состояния и настройки местоположения загрузки.

This blog post показывает, как вы могли использовать диспетчер загрузки в предыдущих версиях Android через скрытые API.

+0

Почему он всегда показывает «Скачать неудачно» на Android 4.4? –

0

Взгляните на here на все Android-приложения.

+0

Это хорошо, но нет никого, кто начнет загрузку (возможно, в браузере, я попробую это). Спасибо, в любом случае. –

+0

Нет, браузер не работает - спасибо в любом случае. Возможно, мне придется делать это вручную. –

+0

@MBober: он работает на меня ... – GregD

2

Что вы пытаетесь сделать? Если ваше приложение хочет загрузить файл, вы можете использовать код UrlConnection. Если вы хотите загрузить пакет, то ACTION_PACKAGE_INSTALL должен делать то, что вы хотите.

+0

Я знаю, но в браузере есть уведомление о загрузке - thingy, и я подумал, что если это было публичное намерение, я мог бы просто использовать его вместо этого. Думаю, мне придется делать это вручную. Спасибо, Isaac –

+3

Я понимаю, что это старо, но этот принятый ответ - не лучший ответ, и, честно говоря, на самом деле не совсем ответ на вопрос. Вместо этого, более высокий рейтинг «правильного» ответа от Alexandre Jasmin ниже. – Josh

17

Хотя я не верю, что в браузере есть загрузочное Intent, вы, вероятно, можете использовать нормальный ACTION_VIEW Intent и иметь браузер, чтобы решить, следует ли загрузить или просмотреть URL-адрес на основе типа контента.

Так что с вашего кода триггера

new Intent(Intent.ACTION_VIEW, Uri.parse(url)) 

и надеюсь, что это вызывает загрузку в браузере.

+0

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