如何在 Jetpack Compose 中访问共享存储中的文件?

Adi*_*nha 7 filepicker android-jetpack-compose

我有一个表格,需要附加手机中的文件。我一直在寻找一个文件选择器,但它只能访问图像,不能访问 pdf、doc、docx 等文件。
如何在 jetpack compose 中实现这一切?

Phi*_*hov 10

根据文档,可以使用Intent.ACTION_OPEN_DOCUMENT.

在 Compose 中你需rememberLauncherForActivityResult要这样做:

var pickedImageUri by remember { mutableStateOf<Uri?>(null) }
val launcher = rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) {
    println("selected file URI ${it.data?.data}")
    pickedImageUri = it.data?.data
}
pickedImageUri?.let {
    Text(it.toString())
}
Button(
    onClick = {
        val intent = Intent(Intent.ACTION_OPEN_DOCUMENT, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
            .apply {
                addCategory(Intent.CATEGORY_OPENABLE)
            }
        launcher.launch(intent)
    }
) {
    Text("Select")
}
Run Code Online (Sandbox Code Playgroud)

  • @AdityaSinha如果这解决了您的问题,请使用投票计数器下的复选标记[接受](https://meta.stackexchange.com/a/86979/794244) (3认同)