Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
411 of 502 menu
◀ ▶

Функция rememberLauncherForActivityResult

Функция rememberLauncherForActivityResult регистрирует контракт Activity Result в Compose и возвращает ActivityResultLauncher. Первый аргумент - контракт, например RequestPermission, второй - лямбда с результатом. Аналог registerForActivityResult для composable.

Синтаксис

val launcher = rememberLauncherForActivityResult( ActivityResultContracts.RequestPermission(), ) { granted -> }

Параметры

Параметр Описание
contract Объект контракта: RequestPermission, PickVisualMedia и другие.
onResult Лямбда, которую вызывают, когда пользователь закончил диалог или второй экран.

Пример

Давайте запросим одно разрешение по кнопке:

import android.Manifest import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.compose.setContent import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var label by remember { mutableStateOf("abcde") } val launcher = rememberLauncherForActivityResult( ActivityResultContracts.RequestPermission(), ) { granted -> label = if (granted) "12345" else "abcde" } Button(onClick = { launcher.launch(Manifest.permission.CAMERA) }) { Text(text = "abcde") } Text(text = label) } } }

На экране после выдачи камеры текст сменится на "12345".

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить