Manejador de permisos reutilizable en una arquitectura Jetpack Compose | de Mayowa Egbewunmi | agosto 2022

por Mayowa Egbewunmi, ingeniero de AndroidEl lanzamiento de Jetpack Compose cambia la forma en que creamos interfaces de usuario en Android. Simplifica y acelera el desarrollo de la interfaz de usuario en Android. Un componente del desarrollo de la interfaz de usuario de Android que también se ve afectado por este cambio es cómo se manejan los permisos en Android. La biblioteca Compose Companist Permissions proporciona una API Compose fácil de usar para gestionar permisos en una arquitectura Jetpack Compose. Sin embargo, no elimina los componentes básicos estándar de escribir código repetido para manejar los permisos. En este artículo, le mostraré cómo crear un controlador de permisos reutilizable para la interfaz de usuario de Jetpack Compose. Usaremos la biblioteca de permisos de acompañante para crear esta clase de controlador de permisos. Comencemos por crear una clase PermissionsHandler que manejará todos los permisos. eventos llamando a un Estado federal Actualización, que a su vez activa nuestro permiso personalizado para realizar el permiso solicitado acción. Así es como se ve PermissionsHandlerSolo tenemos 2 variables en el Permission Handler «State», el «Estado de Permisos Múltiples» proporciona información sobre el estado de los permisos necesarios. Esta propiedad nos indicaría si se deniega o concede un permiso requerido, o si es necesario mostrar una pantalla de motivo de permiso. Obtenemos multiplePermissionsState de Accompanist Permission API RememberMultiplePermissionsState y luego lo pasamos a PermissionHandler.State. a través del evento PermissionStateUpdated. Muy pronto veremos como se despacha el evento PermissionStateUpdated y otros eventos. Primero, implementemos los métodos para manejar estos eventos. Para el evento PermissionRequired, verificamos multiplePermissionsState para determinar la acción de permisos adecuada para usar ShowGotoSettingsDialog son componibles personalizados que creé. Estos se pueden reemplazar con tus componibles favoritos. Si la acción de permiso es REQUEST_PERMISSION, llamamos al método launchMultiplePermissionRequest desde la biblioteca complementaria. El paso final para nosotros es crear un componente de HandlePermissionsRequest que se pueda inyectar en cualquier interfaz de usuario de redacción. El componible toma un PermissionHandler como parámetro junto con una lista de permisos requeridos. Los 2 argumentos se pueden pasar desde el componible principal. Al examinar el código anterior, podemos ver que se envían eventos a PermissionHandler, incluido el evento PermissionsStateUpdated. Un cambio en el estado de permisos hace que se ejecute la API de LaunchedEffect Compose. En este punto, hemos creado una clase de controlador de permisos reutilizable para cada interfaz de usuario de Compose. Para usar este controlador de permisos, podemos crear PermissionHandler directamente en la interfaz de usuario de Compose o tenerlo como un argumento de ViewModel. En el código de muestra completo publicado en Github, hice referencia a PermissionHandler de ViewModel. El siguiente fragmento muestra cómo puede apuntarlo directamente al repositorio Compose-UIMy github para la grabación de video con Jetpack Compose, y CameraX usa este controlador de permisos. Le invitamos a echar un vistazo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.