Найти в Дзене
Android Head First

Android. Что такое Intent.

В Android, Намерение (Intent) - это объект, который используется для связи между различными компонентами приложения (активности, службы, приемника широковещательных сообщений и т.д.) или между разными приложениями в системе. Оно представляет собой специальный контейнер для информации о действии, которое вы хотите выполнить или о событии, которое произошло.

Намерения делятся на два основных типа: явные и неявные.

1. Явные намерения (Explicit Intents):
Явные намерения используются для запуска конкретного компонента внутри того же приложения. То есть вы указываете явный адрес целевой компоненты (класс активности, службы и т.д.) и система запустит его. Явные намерения часто используются для навигации между разными активностями в приложении.

Пример использования явного намерения для запуска активности:

-2

В этом примере у нас есть две активности: MainActivity и TargetActivity. При нажатии на кнопку с идентификатором "button" в MainActivity, создается явное намерение (Explicit Intent) для запуска TargetActivity. Метод startActivity() выполняет запуск указанной активности (TargetActivity).

2. Неявные намерения (Implicit Intents):
Неявные намерения используются для вызова компонентов, которые могут обрабатывать определенное действие, но вы не указываете конкретный адрес компонента. Вместо этого, вы задаете действие (action) и опциональные данные (тип данных, категорию, URI и т.д.). Система Android найдет подходящий компонент, который может выполнить указанное действие.

Пример использования неявного намерения для отправки текстового сообщения:

-3

В этом примере у нас также есть MainActivity. При нажатии на кнопку "button" создается неявное намерение (Implicit Intent) с действием (action) ACTION_SEND, что указывает на желание отправить данные. В данном случае, мы отправляем текстовое сообщение с помощью ACTION_SEND. Затем, с помощью startActivity(), система Android находит все доступные приложения, которые могут обработать текстовое сообщение, и предоставляет пользователю выбор.

Передача данных с использованием Намерений:
Одной из важных возможностей Намерений является возможность передачи данных между компонентами. Для этого используются дополнительные параметры, которые можно добавить в намерение с помощью метода `putExtra()`. В целевом компоненте эти данные могут быть извлечены.

Пример передачи данных между активностями:

-4

В этом примере у нас есть две активности: MainActivity и ReceivingActivity. При нажатии на кнопку "button" в MainActivity создается явное намерение для запуска ReceivingActivity, и в него добавляется дополнительный параметр "message" с текстовым сообщением. Затем ReceivingActivity получает переданное сообщение из полученного намерения и отображает его в элементе TextView.

Намерения также используются для запуска служб (Services), получения результатов от других компонентов (startActivityForResult), а также для отправки и приема широковещательных сообщений (Broadcasts).