Una guía paso a paso para descargar archivos mediante WorkManager | Por Rahul Ray | Marzo de 2022
Hola desarrolladores de Android, en este artículo, veremos un ejemplo paso a paso del uso de WorkManager para implementar la funcionalidad de descarga en su aplicación.
En lugar de un archivo de diseño XML tradicional, usaremos Jetpack Compose para la interfaz de usuario.
Entonces, demos el primer paso para agregar Work Manager a nuestro proyecto.
Paso 1: Agregue la dependencia de WorkManager al proyecto
Implementar «androidx.work:work-runtime-ktx:2.7.1»
Paso 2: definir el trabajador de descarga de archivos
Crear una nueva clase llamada trabajador de descarga de archivos y cambiarlo de trabajador de rutina
Ahora defina dos objetos constantes, uno para datos de entrada y salida y otro para notificaciones.
Después de esto, defina una función para guardar el archivo desde la URL a la carpeta Descargas.
Ahora, debido a los cambios en la API de almacenamiento después de Android 11, apuntaremos a todos los SDK.
Aquí restringimos mimeType a Pdf, Png y Mp4. También puede agregar a otras personas. Para SDK ≥ 29 usamos MediaStore y el resto usa ExternalStoragePublicDirectory.Esta getSavedFileUri() La función devolverá un URI si el archivo se guardó correctamente; de lo contrario, será nulo.
Ahora necesitamos mostrar una notificación cuando se guarde el archivo.Para mostrar la notificación, necesitamos agregar canal de notificaciones Disponible en Android Oreo y superior.
Solo necesitamos mostrar una notificación cuando se guarde el archivo. Después de eso, también tenemos que cancelarlo.
Ahora trabajo() El método se ve así.
Paso 3: Defina el modelo de archivo para descargar
Agregamos inicialización URL descargado y nulo De forma predeterminada, asumimos que el archivo no se ha descargado y no tenemos un URI para él.
Esta descargando Los objetos componibles usarán esto para saber si el archivo se está descargando.
Paso 4: Defina los componibles que contendrán los datos del archivo
archivos de proyecto necesitar documento Como argumentos y tiene dos funciones lambda para comenzar a descargar y abrir un archivo específico.
la descripción depende de descargando y URL descargado de documento.
Al hacer clic en el contenedor, si no tenemos una URI del archivo de descarga, iniciaremos la descarga, de lo contrario, abriremos el archivo con esa URI.
Paso 5: agregue permisos a su archivo de manifiesto (antes de que lo olvide)
Paso 6: Obtenga el permiso del usuario
usaremos Lanzador de resultados de actividad leer y escribir, porque obviamente onActivityResult Ahora se ha depreciado.
Como también tenemos permisos, ahora podemos comenzar a definir nuestro administrador de trabajo e implementar la funcionalidad de descarga de archivos.
Esta iniciar descarga de archivo() función tendrá un documento objeto y tres funciones lambda para definir el estado actual, es decir, éxito, fracaso y ejecución.
Esta será una solicitud de trabajo única, ya que solo necesitamos descargar un archivo a la vez. También agregaremos algunas restricciones necesarias para esta solicitud de trabajador, como que Internet debe estar disponible y el almacenamiento o la batería no deben estar bajos.
Realizaremos un seguimiento del estado actual del trabajador con datos en tiempo real proporcionados por workManger.
La función completa se ve así.
Paso 7: Defina un archivo ficticio de datos e implemente el resto
Para definir los datos que usaremos estado mutable, De esta forma, nuestro componible se recompondrá cuando cambie el estado del archivo.
Cuando cambia el estado del administrador de trabajo, cambiamos el estado de los datos del archivo.
Después del éxito, estableceremos está descargando = false y establecer URI de descarga al URI de salida.
En caso de falla, estableceremos está descargando = false y URI de descarga = nulo.
Al ejecutarlo, estableceremos está descargando = verdadero
Después de descargar el archivo, haga clic en él y la intención abrirá el archivo descargado.
Cuando ejecute la aplicación, se le pedirá permiso y luego, una vez que comience a descargarla, también podrá ver una barra de progreso con una notificación. Después de la descarga, toque para abrir el archivo descargado.
Este es el ejemplo. Nos vemos en el próximo artículo.
puedes contactarme LinkedIn y Gorjeo.