<данные>

синтаксис:
<data android:scheme="string"
      android:host="string"
      android:port="string"
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:pathSuffix="string"
      android:pathAdvancedPattern="string"
      android:mimeType="string" />
содержится в:
<intent-filter>
описание:
Добавляет спецификацию данных в фильтр намерений. Спецификация представляет собой тип данных, использующий атрибут mimeType , URI или и тип данных, и URI. URI задается отдельными атрибутами для каждой его части:

<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]

Эти атрибуты, определяющие формат URI, являются необязательными, но также взаимозависимыми:

  • Если для фильтра намерений не указана scheme , все остальные атрибуты URI игнорируются.
  • Если для фильтра не указан host , атрибут port и все атрибуты пути игнорируются.

Все элементы <data> , содержащиеся в одном элементе <intent-filter> вносят свой вклад в один и тот же фильтр. Так, например, следующая спецификация фильтра:

<intent-filter . . . >
    <data android:scheme="something" android:host="project.example.com" />
    ...
</intent-filter>

эквивалентно этому:

<intent-filter . . . >
    <data android:scheme="something" /&gt
    <data android:host="project.example.com" />
    ...
</intent-filter>

Вы можете разместить любое количество элементов <data> внутри <intent-filter> , чтобы предоставить ему несколько вариантов данных. Ни один из его атрибутов не имеет значений по умолчанию.

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

атрибуты:
android:scheme
Часть схемы URI. Это минимальный необходимый атрибут для указания URI. Для фильтра должен быть установлен хотя бы один атрибут scheme , иначе ни один из других атрибутов URI не будет иметь смысла.

Схема указывается без завершающего двоеточия, например http , а не http: .

Если фильтр имеет набор типов данных (с использованием атрибута mimeType ), но не имеет схемы, предполагаются схемы content: и file:

Примечание . Сопоставление схем в платформе Android чувствительно к регистру, в отличие от RFC. Поэтому всегда указывайте схемы строчными буквами.

android:host
Хостовая часть органа URI. Этот атрибут не имеет смысла, если для фильтра также не указан атрибут scheme . Чтобы сопоставить несколько поддоменов, используйте звездочку ( * ), чтобы соответствовать нулю или более символам в хосте. Например, хост *.google.com соответствует www.google.com , .google.com и developer.google.com .

Звездочка должна быть первым символом атрибута хоста. Например, хост google.co.* недействителен, поскольку подстановочный знак звездочки не является первым символом.

Примечание . Сопоставление имен хостов в платформе Android чувствительно к регистру, в отличие от формального RFC. Поэтому всегда указывайте имена хостов строчными буквами.

android:port
Порт — часть органа URI. Этот атрибут имеет смысл только в том случае, если для фильтра также указаны атрибуты scheme и host .
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
Часть пути URI, которая должна начинаться с / . Атрибут path указывает полный путь, который сопоставляется с полным путем в объекте Intent . Атрибут pathPrefix указывает частичный путь, который сопоставляется только с начальной частью пути в объекте Intent .

Атрибут pathSuffix точно соответствует конечной части пути в объекте Intent , и этот атрибут не обязательно должен начинаться с символа / . Атрибут pathPattern указывает полный путь, который соответствует полному пути в объекте Intent , но может содержать следующие подстановочные знаки:

  • Звездочка ( * ) соответствует последовательности нулей многим вхождениям непосредственно предшествующего символа.
  • Точка, за которой следует звездочка ( .* ), соответствует любой последовательности от нуля до многих символов.

Атрибут pathAdvancedPattern указывает полный путь, который сопоставляется с полным путем объекта Intent и поддерживает следующие шаблоны, подобные регулярным выражениям:

  • Точка ( . ) соответствует любому символу.
  • Набор ( [...] ) соответствует диапазонам символов. Например, [0-5] соответствует одной цифре от 0 до 5, но не от 6 до 9. [a-zA-Z] соответствует любой букве, независимо от регистра. Наборы также поддерживают модификатор «not» ^ .
  • Модификатор звездочки ( * ) соответствует предыдущему шаблону ноль или более раз.
  • Модификатор плюс ( + ) соответствует предыдущему шаблону один или несколько раз.
  • Модификатор диапазона ( {...} ) указывает, сколько раз может соответствовать шаблон.
Средство сопоставления pathAdvancedPattern — это реализация оценки, в которой сопоставление с шаблоном выполняется в реальном времени без поддержки обратного отслеживания.

Поскольку \ используется как escape-символ при чтении строки из XML, перед ее анализом как шаблона вам необходимо выполнить двойной escape. Например, литерал * записывается как \\* , а литерал \ записывается как \\\ . Это похоже на то, что вы пишете при создании строки в коде Java.

Дополнительные сведения об этих пяти типах шаблонов см. в описаниях PATTERN_LITERAL , PATTERN_PREFIX , PATTERN_SIMPLE_GLOB , PATTERN_SUFFIX и PATTERN_ADVANCED_GLOB в классе PatternMatcher .

Эти атрибуты имеют смысл только в том случае, если для фильтра также указаны атрибуты scheme и host .

pathSuffix и pathAdvancedPattern были представлены на уровне API 31.

android:mimeType
Тип мультимедиа MIME, например image/jpeg или audio/mpeg4-generic . Подтипом может быть подстановочный знак звездочки ( * ), указывающий на совпадение любого подтипа.

Обычно фильтр намерений объявляет элемент <data> , который включает только атрибут android:mimeType .

Примечание . Сопоставление типов MIME в платформе Android учитывает регистр, в отличие от формальных типов MIME RFC. Поэтому всегда указывайте типы MIME, используя строчные буквы.

представлено в:
API уровня 1
см. также:
<action>
<category>