Как получить данные из intent не зная ключ?

Использую ActivityResultApi для получения изображения из external storage. Как мне достать данные из возвращяемого интента, если я не знаю ключ?

    class GetImageContract : ActivityResultContract<Unit, Bitmap>() {

    override fun createIntent(context: Context, input: Unit?): Intent {
        val intent = Intent(ACTION_GET_CONTENT)
        intent.type = "image/*"
        return intent
    }

    override fun parseResult(resultCode: Int, intent: Intent?): Bitmap? {
        val data = intent?.extras?.get("Dont know")
       
    }
}

Ответы (1 шт):

Автор решения: Yura Ivanov

Для ACTION_GET_CONTENT результат возвращается в Intent.getData(), который типа Uri, который содержит путь до контента. Т.е. Bitmap сразу из intent'а не получить, см. ContentResolver.openInputStream(uri).

Кстати аналогичный контракт уже есть в SDK ActivityResultContracts.GetContent. И получается так:

ActivityResultLauncher<String> requestGetFileContents = registerForActivityResult(
                new ActivityResultContracts.GetContent(), resultUri-> {
  // Открываем поток и дальше читаем, сохраняем, получаем bitmap и т.д.,
  // используя ContentResolver.openInputStream(resultUri)
});

requestChooseFile.launch("image/*");
→ Ссылка