Llamar selector de archivos nativo en Android


¿Necesita mostrar el selector de archivos en su aplicación de Android para permitir que los usuarios elijan archivos en su almacenamiento local?

El sistema Android ofrece un selector de archvios de forma nativa, que permite elegir los archivos que están disponibles en su dispositivo, permite la seleción de archivos en todas las ubicaciones posibles, hasta permite obtener archvios de almacenamiento en la nube de google drive. 

Como tambien el tipo de archvio, para imágenes, videos, audios, documentos de texto o otros formatos.

Llamar el selector de archivos

Primero debemos registrar la obtención de resultado del selector de archivos mediante registerForActivityResult usando el ActivityResultContracts.OpenDocument()

private val filePickerLauncher = registerForActivityResult(
    ActivityResultContracts.OpenDocument()
) { result ->
    Log.d(TAG, ": $result")

    result?.let { docUri ->

        //docUri la ruta del archivo selecionado

    }


}

y cuando deseamos mostrar el file picker, en este caso para solicitar documentos de texto plano

filePickerLauncher.launch(arrayOf("text/plain"))

Pasando Múltiples Tipos Mime

Si se requiere pedir diferente tipos de arhcivos, solo se debe ir añadiendo en el arrayOf

filePickerLauncher.launch(
            arrayOf(
                "application/pdf",
                "application/msword",
                "application/ms-doc",
                "application/doc",
                "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
                "text/plain"
            )
        )

Selector de archivos multiples

Si se quiere pedir más de una archivo a la vez, con ActivityResultContracts.OpenMultipleDocuments, se obtendrá una lista de las uris de los archivos selecionados

private val docMultiplePicker = registerForActivityResult(
    ActivityResultContracts.OpenMultipleDocuments()
) { result ->

    result?.let { uriList ->

        uriList.forEach { uriDoc ->
            Log.d(TAG, "file: $uriDoc")
        }

    }
}

Su llamada al selector de archivos multiple

docMultiplePicker.launch(arrayOf("*/*"))
Anuncio publicitario

Publicado por Codelaby

Mobile DevDesigner

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: