Поддержка ссылок на контент

Начиная с версии 1.2.0 Navigation 3 поддерживает ссылки на контент в приложении с помощью классов DeepLinkRequest и DeepLinkMatcher.

Чтобы добавить в приложение поддержку ссылок на контент, выполните следующие действия:

  1. Определите фильтры интентов в файле AndroidManifest.xml, чтобы указать, какие URI может обрабатывать ваше приложение.
  2. Создайте экземпляры DeepLinkMatcher, чтобы сопоставить входящие запросы с ключами навигации.
  3. Сопоставляйте входящие запросы в методе onCreate или onNewIntent объекта activity и обновляйте обратный стек.

Создать DeepLinkRequest

DeepLinkRequest представляет входящую ссылку на контент. Он содержит элемент DeepLinkUri и необязательный элемент RequestExtras с дополнительной информацией, например действием намерения или MIME-типом.

Добавьте DeepLinkRequest дополнительных объекта

Чтобы сохранить дополнительную информацию, связанную со ссылкой на контент, используйте класс RequestExtras. Чтобы обеспечить типобезопасность при определении и создании экземпляров дополнительных параметров, библиотека предоставляет интерфейс RequestExtrasKey и DSL requestExtras.

Кроме того, библиотека предоставляет два дополнительных ключа и связанные с ними вспомогательные функции:

  • MimeTypeExtrasKey – используется для хранения MIME-типа String.
  • ActionExtrasKey (только для Android) – используется для хранения действия String Intent.

Чтобы определить собственные дополнительные параметры, реализуйте интерфейс RequestExtrasKey с типизированным универсальным шаблоном:

Вы также можете использовать emptyRequestExtras(), чтобы создать пустой экземпляр, или объединить дополнительные параметры с помощью операторов + (plus) и - (minus).

Как создать DeepLinkRequest на основе Intent

На устройстве Android вы можете создать DeepLinkRequest прямо из Intent. В этом случае DeepLinkRequest создается следующим образом:

  • Значение uri копируется из поля data намерения.
  • Если значение не равно null, MIME-тип и дополнительные данные действия задаются из соответствующих полей намерения.
  • Все intent.extras с ненулевыми значениями сохраняются как SavedState в DeepLinkRequest.IntentExtrasKey.
  • Добавляются все дополнительные параметры, указанные в параметре extras.

DeepLinkMatcher сопоставляет входящие экземпляры DeepLinkRequest с ключами навигации, которые можно добавить в обратный стек приложения. В Navigation 3 есть три встроенных сопоставителя: UriDeepLinkMatcher для сопоставления URI на основе шаблонов, StaticKeyDeepLinkMatcher для базовых ссылок и BackStackMatcher для создания синтетических обратных стеков. Библиотека также поддерживает пользовательские сопоставители для случаев, не охваченных встроенными сопоставителями.

Подробнее о том, как создать DeepLinkMatcher…

Добавьте фильтры интентов

Чтобы ссылка на контент запускала действие, необходимо определить соответствующие элементы <intent-filter> в файле AndroidManifest.xml приложения. Подробнее о том, как добавить фильтры интентов для входящих ссылок…

Сопоставление входящего запроса

После того как вы создадите экземпляры DeepLinkMatcher, вы сможете сопоставлять входящие запросы в своем действии.

Чтобы сопоставить входящий запрос, выполните следующие действия:

  1. Создайте экземпляр DeepLinkMatcher.
  2. Соберите все экземпляры DeepLinkMatcher явным образом или с помощью мультисвязывания.
  3. Создайте DeepLinkRequest на основе входящего Intent.
  4. Сопоставить запрос со всеми сопоставителями и найти наилучшее совпадение.
  5. Создайте обратный стек из результата сопоставления.