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

Класс PickVisualMedia

Класс ActivityResultContracts.PickVisualMedia показывает Photo Picker или галерею и возвращает Uri выбранного файла или null, если пользователь отменил. В launch передают PickVisualMediaRequest с типом ImageOnly или VideoOnly. На части устройств отдельное READ permission не нужно благодаря picker.

Синтаксис

ActivityResultContracts.PickVisualMedia()

Пример

Давайте выберем одно изображение:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.compose.setContent import androidx.activity.result.PickVisualMediaRequest 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.PickVisualMedia(), ) { uri -> label = if (uri != null) "12345" else "abcde" } Button(onClick = { launcher.launch( PickVisualMediaRequest( ActivityResultContracts.PickVisualMedia.ImageOnly, ), ) }) { Text(text = "abcde") } Text(text = label) } } }

На экране после выбора файла текст станет "12345", при отмене останется "abcde".

Пример

Давайте разрешим только видео:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.compose.setContent import androidx.activity.result.PickVisualMediaRequest 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.PickVisualMedia(), ) { uri -> label = if (uri != null) "12345" else "abcde" } Button(onClick = { launcher.launch( PickVisualMediaRequest( ActivityResultContracts.PickVisualMedia.VideoOnly, ), ) }) { Text(text = "abcde") } Text(text = label) } } }

На экране системный picker покажет только видео, результат отразится в тексте.

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

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