Как получить данные из 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/*");