gpt4 book ai didi

android - 如何在 Kotlin Jetpack Compose 中使用 rememberLauncherForActivityResult 读取文件?

转载 作者:行者123 更新时间:2023-12-04 23:46:36 27 4
gpt4 key购买 nike

所以我有这个可组合的,它试图从存储中读取数据,

@Composable
private fun Screen() {
val launcher = rememberLauncherForActivityResult(contract = ActivityResultContracts.StartActivityForResult()) { result ->
val uri = result.data?.data.toString()
if(uri !== null) {
val file = File(uri)
val bytes = file.readBytes()
println(bytes)
}
}
Column() {
Button(onClick = {
val intent = Intent().setType("*/*").setAction(Intent.ACTION_OPEN_DOCUMENT)
launcher.launch(intent)
}) {
Text("Open file")
}
}
}
但是,它给了我这个错误: content:/com.android.providers.downloads.documents/document/raw%3A%2Fstorage%2Femulated%2F0%2FDownload%2FIMG_CEFEFF486A8C-1.jpeg: open failed: ENOENT (No such file or directory) .我在这里做错了什么?请帮忙。

最佳答案

弄清楚了,

@Composable
private fun Screen() {
val context = LocalContext.current

val launcher = rememberLauncherForActivityResult(contract = ActivityResultContracts.GetContent()) { result ->
val item = context.contentResolver.openInputStream(result)
val bytes = item?.readBytes()
println(bytes)
item?.close()
}

return Column {
Button(onClick = {
launcher.launch("*/*")
}) {
Text("Open file")
}
}
}

关于android - 如何在 Kotlin Jetpack Compose 中使用 rememberLauncherForActivityResult 读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68046077/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com