Что такое intent (намерение) в Android?

Что такое intent (намерение) (интент) в Android?

Словарное значение намерения — это намерение или цель . Таким образом, это можно описать как намерение совершить действие.

Intent — это в основном сообщение, которое передается между компонентами (такими как Activity , Services , Broadcast Receivers и Content Providers ). Таким образом, это почти эквивалентно параметрам, передаваемым в вызовы API. Фундаментальные различия между вызовами API и вызовом компонентов через намерения:

  • Вызовы API синхронны, а вызовы на основе намерений — асинхронны.
  • Вызовы API являются привязкой во время компиляции, тогда как вызовы на основе намерений являются привязкой во время выполнения.

Конечно, намерения можно заставить работать точно так же, как вызовы API, используя так называемые явные намерения, которые будут объяснены позже. Но чаще всего неявные намерения — это путь к некоторым решениям, и именно это объясняется здесь.

Намерение — это в основном сообщение о том, что вы сделали или хотите, чтобы что-то произошло. В зависимости от намерения приложения или ОС могут прослушивать его и реагировать соответствующим образом. Думайте об этом как о массовом электронном письме группе друзей, в котором вы говорите своему другу Джону сделать что-то или друзьям, которые могут сделать X ( «фильтры намерений» ), сделать X. Другие люди проигнорируют электронное письмо, но Джон (или друзья, которые могут сделать Х) отреагируют на это.

Чтобы прослушивать широковещательные намерения (например, телефонный звонок или полученное SMS), вы реализуете широковещательный приемник , которому будет передано намерение. Чтобы объявить, что вы можете обрабатывать намерения другого приложения, такие как «сделать снимок», вы объявляете фильтр намерений в файле манифеста своего приложения .

В Android пользователи довольно часто наблюдают переход от одного приложения к другому как часть всего процесса, например, поиск местоположения в браузере и прямой переход в Google Maps или получение ссылок на оплату в сообщениях. Приложение (SMS) и при нажатии перескакивает на PayPal или GPay (Google Pay). Этот процесс перехода пользователей из одного приложения в другое достигается путем передачи Intent в систему. Намерения , как правило, используются для навигации между различными действиями в одном и том же приложении, но обратите внимание, что они не ограничиваются одним приложением, т. е. их также можно использовать при переходе от одного приложения к другому.

Интенты Android в основном используются для:

  1. Запустить службу.
  2. Запустить активность.
  3. Показать веб-страницу.
  4. Показать список контактов.
  5. Рассылка сообщения.
  6. Набрать номер телефона и т.д.

Например, намерения могут быть неявными, вызывающими предполагаемые действия, а также явными, такими как открытие другого действия после некоторых операций, таких как onClick или что-то еще. Ниже приведены некоторые приложения намерений:

  1. Отправка пользователя в другое приложение.
  2. Получение результата от деятельности.
  3. Разрешение другим приложениям запускать вашу деятельность.

Совместная природа приложений Android приводит только к лучшему пользовательскому опыту. Вопрос здесь в том, что если намерением является приложение, которого нет в устройстве, какой следующий вызов?

Некоторый важный метод намерения и его описание.

Методы Описание
Context.startActivity() Это нужно, чтобы запустить новую активность или заставить существующую активность действовать.
Context.startService() Это нужно для запуска новой службы или доставки инструкций для существующей службы.
Context.sendBroadcast() Это должно доставить сообщение широковещательным приемникам.

Глубокие ссылки

Глубокая ссылка — это URL-адрес, который перенаправляет устройство на API этого отсутствующего приложения , а затем в системе запускается служба, чтобы проверить, существует ли версия этого приложения на устройстве. На данный момент предположим, что приложение недоступно на устройстве и никаких предыдущих версий никогда не существовало. Затем эта служба звонит в Play Store с устройства, и появляется приложение, которое просто нужно загрузить.

Не отклоняясь от темы, есть несколько примеров, которые уже существуют в Android Studio для перенаправления на другие приложения, например, Набор номера, Отправка SMS, Открытие настроек и т. д. Повседневные примеры включают перенаправление на YouTube, Карты, WhatsApp, Facebook, и т. д. Сообщество Android, особенно сообщество Kotlin, находится в зените с каждым предстоящим днем. Kotlin стал свидетелем огромного внезапного роста за последние несколько лет и может стать одним из жизненно важных инструментов в будущем, заменив Java и, возможно, также Julia.

Типы намерений Android

В Android есть два типа намерений:

  1. Неявный
  2. Явный.

1) Неявное намерение (Implicit Intent)

Неявное намерение не указывает компонент. В таком случае намерение предоставляет информацию о доступных компонентах, предоставленных системой, которая должна быть вызвана.

Например, вы можете написать следующий код для просмотра веб-страницы.

Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(«http://www.javatpoint.com»));
startActivity(intent);

Неявные намерения Android — это намерение, при котором вместо определения точных компонентов вы определяете действие, которое хотите выполнить. Решение об обработке этого действия остается за операционной системой. ОС решает, какой компонент лучше всего запускать для неявных намерений. Давайте ещё посмотрим пример:

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);

2) Явное намерение (Explicit Intent)

Явное намерение указывает компонент. В таком случае намерение предоставляет вызываемый внешний класс.

Intent i = new Intent(getApplicationContext(), ActivityTwo.class);
startActivity(i);

Явное намерение Android — это намерение, в котором вы явно определяете компонент, который должен вызываться системой Android.

Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);
startActivity(MoveToNext);

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

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

Это определение основано на IntentFilters. IntentFilters указывает типы Intent, на которые может реагировать действие, служба или широковещательный приемник. Фильтр намерений объявляет возможности компонента. Он определяет, что может делать деятельность или служба и какие типы широковещательных передач может обрабатывать Receiver. Это позволяет соответствующему компоненту получать намерения объявленного типа. IntentFilters обычно определяются через файл AndroidManifest.xml. Для BroadcastReceiver их также можно определить в кодировке. IntentFilters определяется своей категорией, действием и фильтрами данных. Он также может содержать дополнительные метаданные.

Если компонент не определяет фильтр Intent, его можно вызвать только с помощью явных Intent.

Ниже приведены 2 способа определения фильтра.

1. Файл манифеста

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

2. Широковещательный приемник

Если вы хотите, чтобы ваш широковещательный приемник получал намерение только во время работы вашего приложения. Затем вы должны определить свой фильтр намерений во время выполнения (программно). Имейте в виду, что это работает только для широковещательных приемников.

intent-android Что такое intent (намерение) в Android?

На рисунке выше видно, как через систему передается неявное намерение начать другое действие: [1] Действие A создает объект Intent с описанием действия и передает его startActivity(). [2] Система Android ищет во всех приложениях фильтр намерений, соответствующий намерению. Когда совпадение найдено, [3] система запускает соответствующее действие (действие B , вызывая его onCreate() метод и передавая ему этот Intent.