2011-08-31 8 views
13

Quiero lograr eso cuando descargue, puede ser detenido, detenido por el usuario. ¿Cómo puedo lograr esto con DownloadManager?¿Cómo pausar usando DownloadManager?

+0

También deseo saber esto. Traté de detener las descargas con el método de eliminación (ids), y parece funcionar si lo comprobamos en la tabla de Descargas, pero en el área de notificación todavía se muestra como descarga. – morphium

+0

La tabla de descargas a la que me refiero es accesible al usar esto: Intención i = nueva Intención(); \t \t \t \t i.setAction (DownloadManager.ACTION_VIEW_DOWNLOADS); startActivity (i); – morphium

+0

Soy nuevo en Android, pero he creado un Administrador de descargas usando C++ Qt. Aquí hay un enlace a mi implementación. Si planea implementar el administrador de descargas usted mismo, podría ser útil. http://kunalmaemo.blogspot.com/2010/05/simple-download-manager-in-qt-with.html – Kunal

Respuesta

1

¿Quieres decir que hacer esto en aplicación Web?

También estoy pensando en lo mismo. Esto podría haber sido posible con flash o sliverlight, etc., ¿pero en HTML puro?

En el lado del servidor podemos utilizar RandomAccessFileReader (Apache) o FileReader similar (en bytes) para acceder a archivos y escribir en secuencia de salida. Podemos recordar la cantidad de bytes que el usuario descargó en la sesión anterior también. Pero el problema es que no existe una forma estándar de guardar el archivo en el disco en el sistema de archivos local del cliente. Puede usar el objeto ActiveX en IE para escribir algún archivo, siempre que sea un archivo secuencial (texto sin formato) y no un archivo binario (como mp3, flv, etc.). Pero este ActiveX no es una solución. Por lo tanto, es posible que deba diseñar algo como 'Downloader' para su sitio web. Al igual que Youtube Downloader.

+1

Estoy hablando de la API para DownloadManager en Android. Quiero saber que DownloadManager tiene una API sobre pausa/reanudar. –

2

Puede ser que "pausa" no es exactamente necesario para usted? Como DownloadManager en realidad doesn't need to pause por reanudar.

¿En lugar de eso, puede que te tropiecen con la reanudación? Ver si esto ayuda:

how to resume an interrupted download Cuando la solución está implementando un encabezado de solicitud Rango ...

// Open connection to URL. 
HttpURLConnection connection = 
     (HttpURLConnection) url.openConnection(); 

// Specify what portion of file to download. 
connection.setRequestProperty("Range", "bytes=" + downloaded + "-"); 
// here "downloaded" is the data length already previously downloaded. 

// Connect to server. 
connection.connect(); 

A menos que necesite para permitir realidad "pausa" (debido a la conmutación de prioridad de descarga de archivos, el mantenimiento de una lista o algo más complicado) y no solo proporcionar capacidad de reanudación, eso debería ayudar.

5

Puede remove a download de la cola. Luego puede volver a iniciarlo pasando el Encabezado HTTP Range al volver a agregarlo a la cola (como se ha mencionado TryTry). No creo que esto actualmente se pueda hacer más fácilmente.

+1

He intentado tu idea, pero parece que no funciona o me perdí algo importante. Obtengo los bytes de datos que se han descargado y cambio el nombre del archivo para evitar la eliminación al ejecutar downloadmanager.remove (referenceId) en el DownloadManager. Y crea una solicitud nuevamente con request.addRequestHeader correspondiente ("Rango", "bytes =" + bytesStored + "-"); y enqueue nuevamente para crear una descarga nuevamente. ¿Me puedes ayudar al respecto? – Cjames

Cuestiones relacionadas