我正在尝试使用Activity Result APIs为我正在开发的应用程序处理一张照片的挑选。我正在尝试使用一个预定义的合同来使事情变得简单。因此,我尝试使用ActivityResultContracts.PickVisualMedia()合同。
我将活动结果启动器设置如下:
private ActivityResultLauncher<PickVisualMediaRequest> pickVisualMediaActivityResultLauncher;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
pickVisualMediaActivityResultLauncher = registerForActivityResult(
new ActivityResultContracts.PickVisualMedia(),
this::onPickVisualMediaActivityResult
);
}
我正在尝试构造一个PickVisualMediaRequest并在这里启动活动结果启动器:
private void onSelectNewPhotoButtonClick() {
PickVisualMediaRequest request = new PickVisualMediaRequest.Builder()
.setMediaType(new ActivityResultContracts.PickVisualMedia.ImageOnly())
.build();
pickVisualMediaActivityResultLauncher.launch(request);
}
问题是Android Studio抱怨ActivityResultContracts.PickVisualMedia.ImageOnly()没有正确的可见性来使用,尽管它是一个有效的VisualMediaType,并且文档暗示它应该这样使用:
我真的找不到关于这个特定场景的任何代码样本。我是不是遗漏了什么?是API有可见性缺陷,还是我今天太傻了?
1条答案
按热度按时间sd2nnvve1#
在CommonsWare的帮助下,我确定
setMediaType()
接受一个Kotlin对象示例。所以,我的上述糟糕功能应该是:Android Studio抱怨类型转换,但代码确实按照预期进行了编译和工作。非常奇怪。