¿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("*/*"))