Implementando Photo Picker en Android + Kotlin + Jetpack Compose | de Tom Colvin | enero 2023

El Selector de fotos de Android (crédito de la foto de Gabriela Radin) El nuevo Selector de fotos de Android es una forma segura y sencilla para que los usuarios seleccionen fotos y/o videos de su biblioteca. Este artículo explica sus beneficios y muestra cómo usarlo con Kotlin + Compose.

Aquí está el enlace de GitHub para el código de este artículo: https://github.com/tdcolvin/PhotoPickerDemo

La selección de fotos en acción, ya que la aplicación solo tiene acceso a las fotos que el usuario ha seleccionado. Anteriormente, si deseaba mostrar al usuario una lista de sus fotos, su aplicación tenía que solicitar acceso a las fotos para que pudiera seleccionar una de toda la biblioteca de fotos del usuario. Esto abrió la puerta al malware que podía robar todas tus fotos sin que lo supieras. Con Photo Picker, no se requiere un permiso tan amplio. De hecho, no se requieren permisos para usar Photo Picker. Esto es totalmente seguro ya que el usuario ya tiene control total sobre qué fotos se ponen a disposición de la aplicación. El selector de fotos es bastante fácil de usar, pero los documentos oficiales se quedan atascados en la zona de actividad en lugar de usar la redacción. Así es como se hace de la manera más moderna.

Iniciar la selección de fotos

Esto se hace a través de startActivityForResult(). Es fácil hacerlo con Actividades, pero con Compose necesitamos un poco de ayuda de AndroidX. Agregue esto al archivo gradle de su módulo si aún no existe: //Para la implementación de RememberLauncherForActivityResult() ‘androidx.actividad:actividad-compose:1.6.1’ //Para la implementación del contrato PickVisualMedia ‘androidx.actividad: actividad-ktx: 1.6 .1’Esto nos da acceso a RememberLauncherForActivityResult() , que es el método Compose para lanzar una actividad y esperar a que arroje un resultado, y PickVisualMedia, que es el contrato que se necesitaba para abrir Photo Picker. Todos juntos: tenga en cuenta que PickVisualMedia obliga al usuario a seleccionar una sola foto. Si desea permitir múltiples, use PickMultipleVisualMedia en su lugar. De cualquier manera, esto creará un lanzador que podemos usar para abrir el selector de fotos. No lo abre solo: en su lugar, comenzamos este lanzador con un argumento PickVisualMediaRequest que describe el tipo de medio permitido. Las opciones son:

  • mediaType = ActivityResultContracts.PickVisualMedia.ImageOnly para mostrar solo imágenes
  • mediaType = ActivityResultContracts.PickVisualMedia.VideoOnly para mostrar solo video
  • mediaType = ActivityResultContracts.PickVisualMedia.ImageAndVideo para mostrar imágenes y videos

Aquí se explica cómo iniciar este lanzador, en este caso como resultado de presionar una tecla: Obtener resultado El resultado se devuelve a través del lanzador creado anteriormente. Se devuelve como un URI que se puede usar para acceder al archivo directamente. En la aplicación de muestra, creo una variable mediante Remember() para almacenar el URI: Para finalmente mostrar la imagen en la pantalla, uso la función RememberAsyncImagePainter() de la biblioteca Coil: Para usar la biblioteca Coil, agréguelos al archivo gradle de su módulo así: // para RememberImagePainter y la función de carga de imágenes El selector de fotos funciona bien:Selector de fotografías en Android 13 En versiones anteriores de Android en las que el Selector de fotografías no está disponible, la intención desencadenada vuelve al selector de documentos. Este es el comportamiento en Android 7:En versiones de Android sin Photo Picker (aquí Android 7) se utiliza la selección de documentos. Esta es una alternativa elegante. Si bien la UX no es tan nítida como el selector de fotos, aún se puede usar y, lo mejor de todo, aún no requiere permisos en toda su biblioteca de fotos. La selección de fotos se lanzó en Android 13, pero también será compatible con Android 11 y superior si se instalaron las últimas actualizaciones del sistema modular a través de Google Play. Este es el caso de la mayoría de los usuarios de Android 11+. Se habla mucho de que esto también se agregará a Play Services, lo que permitiría la compatibilidad con Android 4.4. Se indicó que se incluyó en la actualización de Play Services de noviembre de 2022. Sin embargo, hasta ahora no ha habido instrucciones oficiales sobre su uso. Podemos hurgar y adivinar qué podría ser necesario (la investigación de Mishaal Rahman encontró la intención específica necesaria, por ejemplo), pero incluso si funcionó, vale la pena esperar a la documentación oficial para evitar giros inesperados. Así que ahí lo tenemos. Una forma segura y sin complicaciones de seleccionar fotos o videos que funciona con Kotlin + Compose.

Aquí está el enlace de GitHub para el código de este artículo: https://github.com/tdcolvin/PhotoPickerDemo

Tom Colvin es CTO de Apptaura, los especialistas en desarrollo de aplicaciones; y Conseal Security, los expertos en pruebas de seguridad de aplicaciones móviles. ¡Comuníquese si puedo ayudar con cualquier proyecto de desarrollo o seguridad móvil!

Deja una respuesta

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