ActivityResult API и Compose

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Есть такие действия, которые как павило пишешь в коде один раз и потом долго к ним не возвращаешься. Вот и запрос разрешений, как мне кажется, именно из этой области.

Время идет, Google вносит изменения в свои контракты, и не всегда успеваешь поправить то, что задеприкейчено по горячим следам. Не стало исключением и получение результата из одной астивити в другую.

Если вы решите использовать метод onFctivityResult() вы увидите, что IDE подсветит вам данный метод и сообщит, что:

This declaration overrides deprecated member but not marked as deprecated itself. This deprecation won't be inherited in future releases. Please add @Deprecated annotation or suppress. See https://youtrack.jetbrains.com/issue/KT-47902 for details

Если есть вопрос, то надо найти на него ответ.

Документация от Googl'а довольно подробно описывает как использовать новый ActivityResult API и как его тестировать. Но вопрос остается открытым для тех случаев, когда используется Jet Pack Compose. А может я плохо искала? В любом случае ответ я получила и он оказался очень симпатичным.

Мне надо было проверить наличие разрешения на чтение контактов и если таковое не выдано, запросить его.

@Composable
fun ContactsScreen() {
    val isPermissionGranted = remember { mutableStateOf(false) }
    val launcher =
        rememberLauncherForActivityResult(contract = ActivityResultContracts.RequestMultiplePermissions()) {
            it.entries.forEach { map ->
                Log.i("tag", "${map.key} -> ${map.value}")
                isPermissionGranted.value = map.value
            }
        }

    ....
    LaunchedEffect(key1 = null) {
        launcher.launch(arrayOf(android.Manifest.permission.READ_CONTACTS))
    }
}

Вот так красиво это получилось. Мнение о красоте субъективное, так что вы можете с ним не согласиться :)

Источник: https://habr.com/ru/articles/770562/


Интересные статьи

Интересные статьи

В компании ИВИ, ведущем онлайн-кинотеатре, наша команда разработчиков занимается созданием приложения для платформы Android. Недавно мы успешно выпустили версию для Android TV, используя инновационный...
Привет, Хабр! В своей первой статье я бы хотел поделиться опытом в развертывании Spring Boot приложения. Но для начала небольшое отступление, которое должно ответить на вопросы зачем и почему.Недавно ...
Figma2Android - плагин для Figma, которые быстро и легко конвертирует дизайны из Figma в код Jetpack Compose (Android).История и сложности в создании плагина для конвертации дизайна в Jetpack Compos...
Обычно новым фреймворкам не хватает хороших примеров использования, туториалов и инструментов. Но не в случае с Jetpack Compose: параллельно с разработкой фреймворка Google развивал репозиторий, ...
Ожидания по поводу разработки пользовательского интерфейса выросли. Сегодня мы не можем создать приложение и удовлетворить потребности пользователя, не имея отточенного п...