<данные>

синтаксис:
Если тег данных является непосредственным дочерним элементом <intent-filter> :
<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" />

Если тег данных является непосредственным дочерним элементом <uri-relative-filter-group> :
<data
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:pathSuffix="string"
      android:pathAdvancedPattern="string"
      android:fragment="string"
      android:fragmentPattern="string"
      android:fragmentPrefix="string"
      android:fragmentSuffix="string"
      android:fragmentAdvancedPattern="string"
      android:query="string"
      android:queryPattern="string"
      android:queryPrefix="string"
      android:querySuffix="string"
      android:queryAdvancedPattern="string" />
содержится в:
<intent-filter>
<uri-relative-filter-group>
описание:
Добавляет спецификацию данных к фильтру намерений. Спецификация представляет собой тип данных, определяемый с помощью атрибута 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="project1.example.com" />
    <data android:scheme="something-else" android:host="project2.example.com" android:path="/page1" />
    ...
</intent-filter>

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

<intent-filter . . . >
    <data android:scheme="something" />
    <data android:scheme="something-else" />
    <data android:host="project1.example.com" />
    <data android:host="project2.example.com" />
    <data android:path="/page1" />
    ...
</intent-filter>

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

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

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

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

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

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

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

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

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

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 matcher представляет собой реализацию с оценкой результатов, в которой сопоставление с шаблоном выполняется в реальном времени без поддержки возврата к исходному шаблону.

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

Для получения более подробной информации об этих пяти типах шаблонов см. описания PATTERN_LITERAL , PATTERN_PREFIX , PATTERN_SIMPLE_GLOB , PATTERN_SUFFIX и PATTERN_ADVANCED_GLOB в классе PatternMatcher .

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

pathSuffix и pathAdvancedPattern были введены в API уровня 31.

android:fragment
android:fragmentPrefix
android:fragmentSuffix
android:fragmentPattern
android:fragmentAdvancedPattern

Сопоставитель для фрагмента URI. Не включайте префикс # . См. выше значение и допустимые шаблоны для каждого атрибута.

Чтобы сопоставить символы, которые обычно кодируются в URI, включите в значение атрибута необработанную (незакодированную) форму. Например, <data android:fragment="test!" /> соответствует #test! и #test%21 .

Введено в API уровня 35.

android:query
android:queryPrefix
android:querySuffix
android:queryPattern
android:queryAdvancedPattern

Сопоставитель для параметра запроса URI (и, при необходимости, значения). Например, вы можете сопоставлять URI, заканчивающиеся на ?param=value с помощью <data android:query="param=value" /> . Не включайте префикс ? . См. выше значение и допустимые шаблоны для каждого атрибута.

Чтобы сопоставить символы, которые обычно кодируются в URI, включите в значение атрибута необработанную (незакодированную) форму. Например, <data android:query="test!" /> соответствует ?test! и ?test%21 .

Введено в API уровня 35.

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

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

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

введено в:
Уровень API 1
См. также:
<action>
<category>