- синтаксис:
- Если тег данных является непосредственным дочерним элементом
<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, но может содержать следующие подстановочные знаки:- Точка (
.) соответствует любому отдельному символу. Чтобы обозначить точку, экранируйте её как\\.в вашем XML-файле. - Звездочка (
*) соответствует последовательности от нуля до множества вхождений непосредственно предшествующего символа. Например,a*соответствует "a" и "aa", но не соответствует пустой строке. - Точка, за которой следует звездочка (
.*), соответствует любой последовательности из нуля или более символов. Например,.*соответствует пустой строке, аb.*соответствует "b", "bc" и "bcd".
Важные моменты, которые следует учесть при использовании
pathPattern:- Без возврата назад: алгоритм сопоставления шаблонов Android оценивает строки за один проход вперед без возврата назад. Если подстановочный знак занимает символы, которые понадобятся позже в шаблоне, сопоставление не удастся.
- Символ
.*— ленивый ввод: Подстановочный знак ..*обрабатывает символы до тех пор, пока не найдет первое вхождение следующего символа в шаблоне.-
"abc.*xyz"не будет соответствовать"abcpxqrxyz". Символ.*останавливается на первом"x"(из"px..."). Оставшаяся строка"qrxyz"не соответствует ожидаемому"yz". - Внимание: Поскольку оператор
.*ищет точное совпадение символов для остановки,"a.*.c"не будет соответствовать"abbbc". Сопоставитель рассматривает вторую.как буквальную точку и сканирует строку в поисках"."и терпит неудачу, достигнув конца.
-
-
*— это жадный алгоритм: определенный символ, за которым следует звездочка (напримерa*), является жадным. Он обрабатывает все последующие вхождения этого символа, не заглядывая вперед.- Строка
"a*a"не будет соответствовать строкам типа"aaa". Частьa*" жадно расходует все три"a". Затем шаблон ожидает последнюю"a", но строка уже исчерпана, что приводит к ошибке сопоставления.
- Строка
- Передовые методы:
- Избегайте шаблонов, в которых символ, следующий непосредственно за
*совпадает с символом, предшествующим ему (например,a*a). - Избегайте размещения символов подстановки сразу после
.*(например,.*.или.*.*). - Если вы хотите сопоставить префикс, безопаснее и эффективнее использовать
android:pathPrefixвместо завершенияpathPatternсимволом.*.
- Избегайте шаблонов, в которых символ, следующий непосредственно за
Атрибут
pathAdvancedPatternзадает полный путь, который сопоставляется с полным путем объектаIntentи поддерживает следующие шаблоны, подобные регулярным выражениям:- Точка (
.) обозначает любой символ. - Множество (
[...]) соответствует диапазонам символов. Например,[0-5]соответствует одной цифре от 0 до 5, но не от 6 до 9.[a-zA-Z]соответствует любой букве, независимо от регистра. Множества также поддерживают модификатор "not"^. - Модификатор в виде звездочки (
*) совпадает с предыдущим шаблоном ноль или более раз. - Модификатор плюс (
+) соответствует предыдущему образцу один или несколько раз. - Модификатор диапазона (
{...}) указывает количество раз, которое может соответствовать шаблон.
pathAdvancedPatternmatcher представляет собой реализацию с оценкой результатов, в которой сопоставление с шаблоном выполняется в реальном времени без поддержки возврата к исходному шаблону.Because
\is used as an escape character when the string is read from XML, before it is parsed as a pattern, you need to double-escape. For example, a literal*is written as\\*, and a literal\is written as\\\\. This is like what you write when constructing the string in Java code.Для получения более подробной информации об этих пяти типах шаблонов см. описания
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>
<данные>
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2026-04-21 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2026-04-21 UTC."],[],[]]