标签: activityresultcontracts

如何为 ActivityResultLauncher 构造 PickVisualMediaRequest

我正在尝试使用Activity Result API来处理为我正在开发的应用程序选择单张照片的情况。我正在尝试使用预定义的合同之一来使事情变得简单。因此,我尝试使用ActivityResultContracts.PickVisualMedia()合约。

我将活动结果启动器设置如下:

private ActivityResultLauncher<PickVisualMediaRequest> pickVisualMediaActivityResultLauncher;

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

我正在尝试构建PickVisualMediaRequest并在此处启动 Activity Result Launcher:

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

问题是 Android Studio 抱怨 ActivityResultContracts.PickVisualMedia.ImageOnly() 没有适当的可见性来使用,即使它是有效的 VisualMediaType 并且文档暗示它应该这样使用: 在此输入图像描述

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

java android kotlin activity-result-api activityresultcontracts

8
推荐指数
1
解决办法
6943
查看次数

Android 照片选择器为之前已选择的 uri 设置勾选

参考该功能 -> https://developer.android.com/training/data-storage/shared/photopicker#device-availability

代码及解释一

我创建一个请求,该请求将打开照片和视频选择器,选择 uri 列表后返回到侦听器中

    PickVisualMediaRequest request =
            new PickVisualMediaRequest.Builder()
                    .setMediaType(ActivityResultContracts.PickVisualMedia.ImageAndVideo.INSTANCE)
                    .build();
    pickVisualMediaRequestActivityResultLauncher.launch(request);
Run Code Online (Sandbox Code Playgroud)

代码及解释二

以下代码注册活动结果监听器,并在使用照片选择器选择照片/视频时执行

pickVisualMediaRequestActivityResultLauncher =
                registerForActivityResult(new ActivityResultContracts.PickMultipleVisualMedia(10),
                        result -> {
                            //Handling Here what to do with result (List<Uri>)
                        }
                );
Run Code Online (Sandbox Code Playgroud)

问题是我在 PickMultipleVisualMedia 的构造函数中给媒体文件设置了 10 个限制,用户选择 5 个项目并返回到本地创建的预览屏幕,然后决定选择剩余的 5 个项目,那么我无法找到使这 5 个项目文件已在照片选择器中选择,无法将已选择的 uri 传递给选择器功能,用户必须再次选择所有 10 个文件,有什么解决方案吗?因为我在 Picker 类中找不到任何允许我这样做的函数。

android activityresultcontracts photo-picker

5
推荐指数
0
解决办法
495
查看次数