Намерения и фильтры намерений - Основы Android 2023

YOUTUBE · 28.11.2025 06:33

Ключевые темы и таймкоды

Введение в намерения и фильтры намерений

0:00
  • Намерение Intent — основная концепция разработки Android, представляющая собой «конверт» для передачи информации между компонентами приложения.
  • Intent может быть использован для взаимодействия с другими компонентами Android, такими как действия, службы или широковещательные рассылки.
  • Различие между явными и неявными намерениями.

Явные намерения

0:56
  • Явные намерения нацелены на конкретное приложение и могут быть использованы для запуска действий внутри собственного приложения или других приложений, например, YouTube.
  • Пример использования явного намерения для запуска действия в собственном приложении.

Создание нового действия

1:55
  • Создание нового класса Activity в корневом пакете приложения.
  • Наследование от ComponentActivity и настройка контента с помощью функции setContent из Jetpack Compose.

Регистрация действия в манифесте

2:21
  • Регистрация нового действия в манифесте Android для его отображения на устройстве.
  • Манифест Android описывает функциональность приложения, его компоненты и необходимые разрешения.

Запуск действия через намерение

3:22
  • Создание объекта Intent для запуска действия собственного приложения.
  • Использование контекста пакета и перегрузки класса для создания Intent.
  • Запуск действия с помощью функции startActivity.

Запуск другого приложения

5:01
  • Определение имени пакета приложения YouTube для его запуска.
  • Использование ACTION_MAIN для указания действия намерения.
  • Настройка Intent с указанием пакета приложения.

Получение имени пакета приложения

6:19
  • Использование инструмента ADB для получения списка имён пакетов приложений, установленных на устройстве.
  • Фильтрация списка пакетов с помощью команды pm list packages и инструмента grab для поиска конкретного имени пакета.

Проверка установки приложения

8:03
  • Проверка наличия приложения на устройстве перед его запуском.
  • Использование блока try-catch для обработки исключений, например, ActivityNotFoundException.

Тестирование запуска приложения

9:13
  • Запуск приложения на эмуляторе и проверка его работы.
  • Подтверждение успешного запуска приложения YouTube.

Явные и неявные намерения

9:32
  • Явные намерения чётко указывают действие, которое нужно выполнить.
  • Неявные намерения указывают только действие, а Android выбирает приложение, которое может его выполнить.
  • Пример неявного намерения: открытие текстового файла через другое приложение.

Примеры использования неявных намерений

10:20
  • Отправка электронного письма через почтовое приложение, например, Gmail.
  • Использование неявного намерения для открытия приложения, способного открывать текстовые файлы.

Структура неявного намерения

11:00
  • Намерение состоит из действия и типа данных MIME.
  • Пример указания типа данных: отправка изображения или текста.

Дополнительные данные в намерениях

11:42
  • Возможность передачи параметров намерению через дополнительные действия.
  • Примеры дополнительных данных: тема и содержание электронного письма.

Ограничения сканирования приложений

13:43
  • С версии Android 10 Google ограничил сканирование приложений без явного запроса.
  • Приложение может запрашивать другие приложения только в случае явной необходимости.

Запрос намерений в манифесте

14:42
  • В манифесте нужно указать тип намеренного действия и блок данных.
  • Пример запроса: отправка электронного письма.

Фильтры намерений

16:28
  • Фильтры намерений позволяют приложению получать определённые типы намерений.
  • Пример: получение изображений при нажатии «Поделиться изображением» в Google Chrome.

Настройка фильтров намерений

17:26
  • В манифесте нужно указать фильтр намерений для получения изображений.
  • Определение действия, категории и блока данных для фильтра намерений.
  • Звездочка указывает, что приложение должно получать только изображения, а не текст.

Регистрация приложения для получения изображений

18:35
  • Приложение зарегистрировано для получения изображений любого типа.
  • При переходе в Google Chrome приложение появляется в списке доступных для открытия изображений.

Обработка намерений в приложении

19:07
  • Chrome отправляет данные изображения в намерении приложению.
  • Приложение должно проанализировать данные и показать изображение.
  • Режим запуска singletop позволяет использовать активный экземпляр приложения для обработки намерений.

Обработка намерений с режимом singletop

20:04
  • При использовании режима singletop не создаётся новый экземпляр приложения.
  • Вызывается обратный вызов onNewIntent для обработки намерения.

Извлечение данных из намерения

20:20
  • Извлечение URI изображения из намерения.
  • Использование parcelables для сериализации данных.
  • Проверка версии API для корректной работы с дополнительными потоками.

Отображение изображения в пользовательском интерфейсе

21:13
  • Создание viewmodel для обновления состояния составных элементов.
  • Обновление URI изображения в viewmodel при получении нового намерения.

Добавление зависимости для загрузки изображений

23:01
  • Добавление зависимости от библиотеки Coil для загрузки и кэширования изображений.
  • Проверка существования URI изображения перед отображением.

Тестирование приложения

23:36
  • Запуск приложения и проверка его работы с изображениями из Chrome.
  • Подтверждение корректной работы приложения с разными изображениями.

Применение намерений в других сценариях

24:13
  • Возможность регистрации приложения для телефонных звонков через намерения.
  • Важность простоты использования для привлечения пользователей.

Заключение

25:03
  • Рекомендация поиграть с намерениями и фильтрами намерений.
  • Призыв подписаться на канал для получения новых видео.