假设我有图像组件可以显示从图库中选择的图像;
@Composable
fun ClickableToGalleryImage() {
var imageUri by remember {
mutableStateOf<Uri?>(null)
}
val launcher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.GetContent()
) { uri: Uri? ->
println(imageUri)
imageUri = uri
}
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Image(
painter = rememberAsyncImagePainter(
ImageRequest
.Builder(LocalContext.current)
.data(data = imageUri)
.build()
),
contentDescription = null,
modifier = Modifier
.clickable { launcher.launch("image/*") }
.size(100.dp)
.clip(CircleShape)
.border(2.dp, Color.Gray, CircleShape),
contentScale = ContentScale.Crop
)
}
}
这个工作很好。
但是如果我提取imageUri值;
I/System.out: content://com.android.providers.media.documents/document/image%3A33
并手动键入imageUri变量;
Image(
painter = rememberAsyncImagePainter(
ImageRequest
.Builder(LocalContext.current)
.data(data = "content://com.android.providers.media.documents/document/image%3A33")
.build()
),
contentDescription = null,
modifier = Modifier
.size(100.dp)
.clip(CircleShape)
.border(2.dp, Color.Gray, CircleShape),
contentScale = ContentScale.Crop
)
线圈无法加载图片。为什么呢?我怎么能显示图片从画廊与uri?
线圈无法加载图片。为什么呢?
您没有读权限访问该内容。
我怎么能显示图片从画廊与uri?
使用您从ActivityResultContracts.GetContent
请求中获得的Uri
,在您请求它的同一活动中
如果您需要持久访问内容,请切换到OpenDocument
并在ContentResolver
上调用takePersistableUriPermission()
,提供Uri
。