2

我正在使用新的 Activity Result API 来启动和从 Gallery 中选择图像,我遇到的问题是如何修改新 Activity Result API 中的 Intent 以像旧的 startActivityForResult 一样工作

下面是我从画廊中选择东西的旧方法


        Intent pickImageIntent = new Intent();
        pickImageIntent.setType("image/*");
        pickImageIntent.setAction(Intent.ACTION_PICK);
        startActivityForResult(pickImageIntent, PICK_IMAGE_FROM_GALLERY_REQUEST_CODE);

然后下面是我使用 onActivityResult 获取结果的旧方法


@Override
    public void onActivityResult(int requestCode, int resultCode,
                                 @Nullable @org.jetbrains.annotations.Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == PICK_IMAGE_FROM_GALLERY_REQUEST_CODE) {
            if (resultCode == RESULT_OK && data != null) {

                Uri selectedImageUri = data.getData();

                imvImage.setImageURI(selectedImageUri);

            } else {
                // Show Error Exception Dialog
                // We encountered an error while picking your image from gallery
                // Try Again, Cancel
            }
        }
}

下面是我使用新的 Activity Result API 启动相机的新方法


getImageFromGallery.launch("image/*");

并使用 ActivityResultLauncher 获得以下结果


ActivityResultLauncher<String> getImageFromGallery = registerForActivityResult(new ActivityResultContracts.GetContent(),
            new ActivityResultCallback<Uri>() {
                @Override
                public void onActivityResult(Uri uri) {

                    imvImage.setImageURI(uri);
                }
            });

我的问题是如何将某些内容解析为启动方法或将操作设置为意图示例

pickImageIntent.setAction(Intent.ACTION_PICK);

对此

 getImageFromGallery.launch("image/*");

4

0 回答 0