gpt4 book ai didi

java - 如何为 ActivityResultLauncher 构建 PickVisualMediaRequest

转载 作者:行者123 更新时间:2023-12-05 02:26:14 32 4
gpt4 key购买 nike

我正在尝试使用 Activity Result APIs为我正在开发的应用程序处理单张照片的挑选。我正在尝试使用其中一个预定义契约(Contract)来简化事情。所以,我正在尝试使用 ActivityResultContracts.PickVisualMedia()契约(Contract)。

我正在按如下方式设置 Activity Result Launcher:

private ActivityResultLauncher<PickVisualMediaRequest> pickVisualMediaActivityResultLauncher;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
pickVisualMediaActivityResultLauncher = registerForActivityResult(
new ActivityResultContracts.PickVisualMedia(),
this::onPickVisualMediaActivityResult
);
}

我正在尝试构建一个 PickVisualMediaRequest并在此处启动 Activity 结果启动器:

private void onSelectNewPhotoButtonClick() {
PickVisualMediaRequest request = new PickVisualMediaRequest.Builder()
.setMediaType(new ActivityResultContracts.PickVisualMedia.ImageOnly())
.build();
pickVisualMediaActivityResultLauncher.launch(request);
}

问题是 Android Studio 提示 ActivityResultContracts.PickVisualMedia.ImageOnly() 没有使用适当的可见性,即使它是一个有效的 VisualMediaType 并且文档暗示它应该以这种方式使用: enter image description here

我真的找不到关于这个特定场景的任何代码示例。我错过了什么吗? API 是否存在可见性缺陷,还是我今天太笨了?

最佳答案

在 CommonsWare 的帮助下,我确定 setMediaType() 接受 Kotlin 对象实例。所以,我上面的坏函数应该是:

private void onSelectNewPhotoButtonClick() {
ActivityResultContracts.PickVisualMedia.VisualMediaType mediaType = (ActivityResultContracts.PickVisualMedia.VisualMediaType) ActivityResultContracts.PickVisualMedia.ImageOnly.INSTANCE;
PickVisualMediaRequest request = new PickVisualMediaRequest.Builder()
.setMediaType(mediaType)
.build();
pickVisualMediaActivityResultLauncher.launch(request);
}

Android Studio 提示类型转换,但代码确实按预期编译和工作。非常奇怪。

enter image description here

enter image description here

关于java - 如何为 ActivityResultLauncher 构建 PickVisualMediaRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73999566/

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