2009-12-23 23 views
6

Estoy escribiendo una aplicación para Android, y me gustaría dar a mis usuarios la posibilidad de compartir los documentos que crea.Descargando archivos en Android

Lo que idealmente me gustaría ver serían archivos alojados en un servidor HTTP en alguna parte, por lo que un usuario simplemente puede iniciar su navegador en el teléfono Android, navegar a la página correspondiente y luego descargar el archivo a su teléfono . Entonces me gustaría que mi aplicación pueda abrir ese archivo descargado.

No estoy seguro de si eso es posible en absoluto, pero sin duda estaría interesado en saber de alguien que sepa algo de esas cosas. Desafortunadamente, parece que tengo dificultades para encontrar las respuestas por mí mismo, como gran parte del resto del SDK de Android, hay una gran escasez de documentación relevante.

Respuesta

2

Por cierto, me he tropezado a través de una solución razonable que es un poco justo más fácil que jugar un poco con las intenciones y así sucesivamente ...

El widget de vista Web le permite configurar un objeto DownloadListener que recibe una notificación cada vez que el WebView se dirige a un archivo de un tipo que no comprende nativamente. Por lo tanto, la funcionalidad que estaba buscando se puede lograr creando un WebView en mi aplicación y registrando un DownloadListener para escuchar cuando el usuario descargue uno de los archivos de documentos de mi aplicación.

¡Gracias por toda su ayuda!

+0

Hey MAC estoy en el medio de desarrollar una pequeña universidad LMS . ¿Puedes darme tu solución? Quiero que los usuarios vean la lista de PDF disponibles y que guarden en el dispositivo. y descárguelo nuevamente solo si el usuario no lo tiene en la carpeta. Creo que es simpatizante de tu solución. thnx – Loshi

+0

@Loshi: No he hecho ningún desarrollo de Android desde aproximadamente cuando hice esta pregunta, por lo que mi conocimiento del tema está un poco oxidado. Puede consultar el método ['setDownloadListener'] (http://developer.android.com/reference/android/webkit/WebView.html#setDownloadListener%28android.webkit.DownloadListener%29) de la clase' WebView', y crea tu propia implementación 'DownloadListener' que solo descarga el archivo si aún no está presente en tu carpeta, pero no tengo ningún código de ejemplo funcional para hacerlo. Pruébalo, y ayudaré (tanto como pueda) con cualquier problema específico que surja. – Mac

+0

También puede encontrar la discusión en [esta pregunta] útil (http://stackoverflow.com/questions/9722111). – Mac

3

Es bastante fácil obtener archivos de un servidor web. En su incluye -

import java.net.URL; 
import java.net.URLConnection; 
import java.io.InputStream; 

En su código -

URL requestURL = new URL(urlStringForFileYouWantToOpen); 
URLConnection connection = requestURL.openConnection(); 
InputStream response = connection.getInputStream(); 

Luego hacer lo que quiera con el InputStream. No estoy seguro de si eso es lo suficientemente parecido a su descripción del usuario descargando un archivo y luego accediéndolo desde su aplicación, pero me parece más sencillo dejar que ellos obtengan el archivo mientras está en su aplicación.

4

Cuando el usuario accede a un archivo que desea apoyar, debe poder registrarse con Android usando IntentFilters para indicar que su aplicación puede manejar un MIME-TYPE específico.

Ver el documentation here.

+0

Esto suena bastante parecido a lo que estoy buscando. Estoy recopilando que básicamente habrá un Intento en particular disparado cuando se descarga un archivo, y al registrarse para manejar un tipo MIME en particular, ¿puedo recibir ese Intento? En caso afirmativo, ¿de qué intención estamos hablando en particular y cómo se realiza ese registro? He echado un vistazo rápido al enlace que proporcionó, pero esa página es tan larga que es bastante difícil encontrar algo en particular. – Mac

+0

Hay enumeraciones de tipos de intención, como ver, editar, etc. Todavía no estoy lo suficientemente familiarizado con Android para describir el paso a paso, pero en el archivo de manifiesto de su aplicación, incluye xml de los tipos y datos de intención que manejar, esto lo registrará con el sistema operativo. –

+0

Es posible que desee ir a la sección de ejemplos en esa página http://developer.android.com/guide/topics/intents/intents-filters.html#npex –

0

Si desea integrar la descarga desde la aplicación, entonces la respuesta de @jball es lo que necesita si prefiere que el proceso se inicie a través del navegador, entonces la respuesta de @ Scott es la que necesita. Según su descripción, parece que también desea que los usuarios compartan documentos creados con la aplicación que requerirían que su aplicación pueda cargar aplicaciones en el servidor web. Algo como WebDAV sería ideal para eso, ya sea implementado usando la biblioteca org.apache.http o usando una de las implementaciones de código abierto de su.

Cuestiones relacionadas