Добавление Intent setAction в новый ActivityResultLauncher API результатов деятельности при выборе изображения из галереи

Я использую новый API результатов деятельности для запуска и выбора изображения из галереи. Проблема заключается в том, как изменить намерение в новом API результатов деятельности, чтобы оно работало как старый 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
            }
        }
}

Ниже представлен мой новый способ запуска камеры с использованием нового 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/*");

0 ответов

Другие вопросы по тегам