2009-02-08 24 views
24

Me preguntaba ¿cuál es la intención de descargar URL? En el navegador, descargará cosas con un pequeño icono de notificación. Me preguntaba si puedo usar esa intención (y qué es).Android Descargar Intención

+0

Sinceramente, no tengo idea de lo que está preguntando aquí, por favor aclare. –

+0

Para revisar esta vieja pregunta, es un intento privado. Mire DownloadManager en el AOSP. –

+0

¿Tiene algún enlace/guía/fuente sobre cómo llamar a este DownloadManager? Y, como es privado y, por lo tanto, no es utilizable para nosotros, ¿encontró algún tipo de alternativa sobre cómo descargar un archivo? – TiGer

Respuesta

58

Las aplicaciones pueden descargar archivos con el administrador de descargas al igual que el navegador y gmail. Esto está disponible comenzando con Gingerbread.

Su aplicación necesita el INTERNET permiso para iniciar una descarga. Para guardar el archivo en el directorio de descarga predeterminado, también necesita el permiso WRITE_EXTERNAL_STORAGE.

Así es como se puede descargar una 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); 

Hay un montón de otras opciones para personalizar la notificación, consultar el estado de descarga y configuración de la ubicación de descarga.

This blog post muestra cómo se puede usar el administrador de descargas en versiones anteriores de Android a través de API ocultas.

+0

¿Por qué siempre se muestra "Descargar sin éxito" en Android 4.4? –

0

Echa un vistazo a here en todos los Intentos de Android.

+0

Eso es bueno, pero no hay nadie que inicie una descarga (tal vez el navegador, intentaré eso). Gracias de cualquier manera. –

+0

No, el navegador no funciona, gracias de todos modos. Puede que tenga que hacerlo manualmente. –

+0

@MBober: está funcionando para mí ... – GregD

2

¿Qué estás tratando de hacer? Si su aplicación desea descargar un archivo, puede usar el código de UrlConnection. Si desea descargar un paquete, entonces ACTION_PACKAGE_INSTALL debe hacer lo que desee.

+0

Lo sé, pero el navegador tiene una notificación de descarga - cosita y pensé que si se trataba de un intento público podría usarlo en su lugar. Supongo que tendré que hacerlo manualmente. Gracias, Isaac –

+3

Me doy cuenta de que esto es antiguo, pero esta respuesta aceptada no es la mejor respuesta, y honestamente no es realmente una respuesta para lo que se está preguntando. En cambio, la respuesta "correcta" más alta es de Alexandre Jasmin a continuación. – Josh

17

Si bien no creo que haya una intención de descarga en el navegador, probablemente pueda utilizar un Intento ACTION_VIEW normal y hacer que el navegador decida si debe descargar o ver la URL según el tipo de contenido.

Así que a partir del código de disparo

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

y esperar esto desencadena una descarga en el navegador.

+0

Esto se descarga con el navegador, pero sin ninguna barra de progreso ni comentarios de los usuarios: solo recibo una notificación de descarga completada. –

Cuestiones relacionadas