Добавление 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/*");