- składnia:
- Jeśli tag danych jest bezpośrednim elementem podrzędnym elementu
<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" />
Jeśli tag danych jest bezpośrednim elementem podrzędnym tagu<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" />
- zawarte w:
-
<intent-filter><uri-relative-filter-group> - description:
- Dodaje specyfikację danych do filtra intencji. Specyfikacja to typ danych, który używa atrybutu
mimeType, identyfikatora URI lub obu tych elementów. URI jest określany przez osobne atrybuty dla każdego z jego elementów:<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]Te atrybuty, które określają format identyfikatora URI, są opcjonalne, ale też wzajemnie zależne:
- Jeśli dla filtra intencji nie zostanie określony parametr
scheme, wszystkie pozostałe atrybuty URI zostaną zignorowane. - Jeśli dla filtra nie zostanie określona wartość
host, atrybutporti wszystkie atrybuty ścieżki zostaną zignorowane.
Wszystkie elementy
<data>zawarte w tym samym elemencie<intent-filter>przyczyniają się do tego samego filtra. Na przykład:<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>
jest równoważne tej:
<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>
Możesz umieścić dowolną liczbę elementów
<data>wewnątrz elementu<intent-filter>, aby zapewnić mu wiele opcji danych. Żaden z tych atrybutów nie ma wartości domyślnej.Informacje o tym, jak działają filtry intencji, w tym reguły dopasowywania obiektów intencji do filtrów, znajdziesz w artykule Intencje i filtry intencji oraz w sekcji Filtry intencji w omówieniu pliku manifestu.
- Jeśli dla filtra intencji nie zostanie określony parametr
- atrybuty:
android:scheme- Schemat identyfikatora URI. Jest to minimalny niezbędny atrybut do określenia identyfikatora URI. Filtr musi zawierać co najmniej 1 atrybut
scheme, w przeciwnym razie żadne z innych atrybutów URI nie będą miały znaczenia.Schemat jest określony bez nawiasu klamrowego, np.
httpzamiasthttp:.Jeśli filtr ma ustawiony typ danych (za pomocą atrybutu
mimeType), ale nie ma schematu, zakłada się schematycontent:ifile:.Uwaga: w ramach Androida dopasowywanie schematu, w odróżnieniu od RFC, uwzględnia wielkość liter. Dlatego zawsze określaj schematy za pomocą małych liter.
android:host- Część hosta w autorytecie identyfikatora URI. Ten atrybut jest bez znaczenia, chyba że dla filtra podano też atrybut
scheme. Aby dopasować wiele subdomen, użyj gwiazdki (*), aby dopasować 0 lub więcej znaków w hostie. Na przykład host*.google.compasuje dowww.google.com,.google.comideveloper.google.com.Gwiazdka musi być pierwszym znakiem atrybutu hosta. Na przykład host
google.co.*jest nieprawidłowy, ponieważ symbol wieloznaczny gwiazdka nie jest pierwszym znakiem.Uwaga: w ramach Androida dopasowywanie nazwy hosta jest zależne od wielkości liter, w przeciwieństwie do formalnego standardu RFC. Dlatego zawsze używaj nazw hostów zapisanych małymi literami.
android:port- Numer portu w autorytecie identyfikatora URI. Ten atrybut ma znaczenie tylko wtedy, gdy w filtrze są też określone atrybuty
schemeihost. android:pathandroid:pathPrefixandroid:pathSuffixandroid:pathPatternandroid:pathAdvancedPattern- Ścieżka w identyfikatorze URI, która musi zaczynać się od
/. Atrybutpathokreśla pełną ścieżkę, która jest dopasowywana do pełnej ścieżki w obiekcieIntent. AtrybutpathPrefixokreśla częściową ścieżkę, która jest dopasowywana tylko do początkowej części ścieżki w obiekcieIntent.Atrybut
pathSuffixjest dopasowywany dokładnie do końcowej części ścieżki w obiekcieIntent. Nie musi on zaczynać się od znaku/.Atrybut
pathPatternokreśla pełną ścieżkę, która jest dopasowywana do pełnej ścieżki w obiekcieIntent, ale może zawierać te symbole wieloznaczne:- Kropka (
.) odpowiada dowolnemu znakowi. -
Gwiazdka (
*) odpowiada sekwencji od 0 do wielu wystąpień bezpośrednio poprzedzającego ją znaku. -
Kropka z gwiazdką (
.*) odpowiada dowolnej sekwencji od 0 do wielu znaków.
Atrybut
pathAdvancedPatternokreśla pełną ścieżkę, która jest dopasowywana do pełnej ścieżki obiektuIntenti obsługuje te wzorce podobne do wyrażeń regularnych:-
Kropka (
.) odpowiada dowolnemu znakowi. -
Zestaw (
[...]) odpowiada zakresom znaków. Na przykład[0-5]pasuje do 1 cyfry od 0 do 5 , ale nie od 6 do 9.[a-zA-Z]pasuje do dowolnej litery, bez względu na wielkość liter. Zbiór obsługuje też modyfikator „nie”^. -
Modyfikator gwiazdka (
*) dopasowuje poprzedni wzorzec zero lub więcej razy. -
Modyfikator plusa (
+) dopasowuje poprzedni wzór co najmniej 1 raz. -
Modyfikator zakresu (
{...}) określa liczbę dopasowań wzorca.
pathAdvancedPatternto implementacja oceny, w której dopasowywanie odbywa się w czasie rzeczywistym na podstawie wzorca bez obsługi cofnięcia.Ponieważ znak
\jest używany jako znak ucieczki podczas odczytu ciągu z pliku XML, przed przeanalizowaniem go jako wzorca należy go podwójnie uciec. Na przykład litera*jest zapisywana jako\\*, a litera\jest zapisywana jako\\\. Jest to podobne do tego, co piszesz podczas tworzenia ciągu znaków w kodzie Java.Więcej informacji o tych 5 typach wzorców znajdziesz w opisach klas
PATTERN_LITERAL,PATTERN_PREFIX,PATTERN_SIMPLE_GLOB,PATTERN_SUFFIXiPATTERN_ADVANCED_GLOBw klasiePatternMatcher.Te atrybuty mają znaczenie tylko wtedy, gdy w filtrze są też określone atrybuty
schemeihost.pathSuffixipathAdvancedPatternzostały wprowadzone na poziomie API 31. - Kropka (
android:fragmentandroid:fragmentPrefixandroid:fragmentSuffixandroid:fragmentPatternandroid:fragmentAdvancedPattern-
Dopasowywacz fragmentu identyfikatora URI. Nie dodawaj prefiksu
#. Oznaczanie i wzorce dozwolone w każdym atrybucie znajdziesz powyżej.Aby dopasować znaki, które są zwykle kodowane w identyfikatorze URI, dodaj do wartości atrybutu ich postać nieprzetworzoną (niezakodowaną). Na przykład:
<data android:fragment="test!" />pasuje do#test!i#test%21.Wprowadzony na poziomie API 35.
android:queryandroid:queryPrefixandroid:querySuffixandroid:queryPatternandroid:queryAdvancedPattern-
Dopasowywacz parametru zapytania URI (i opcjonalnie wartości). Możesz na przykład dopasowywać identyfikatory URI kończące się ciągiem
?param=valuedo ciągu<data android:query="param=value" />. Nie dodawaj prefiksu?. Oznaczanie i dozwolone wzorce dla każdego atrybutu znajdziesz powyżej.Aby dopasować znaki, które są zwykle kodowane w formacie URI, w wartości atrybutu podaj ich postać nieprzetworzoną. Na przykład:
<data android:query="test!" />pasuje do?test!i?test%21.Wprowadzono na poziomie interfejsu API 35.
android:mimeType- Typ multimediów MIME, np.
image/jpeglubaudio/mpeg4-generic. Podtypem może być symbol wieloznaczny gwiazdka (*), który wskazuje, że pasuje dowolny podtyp.Filtr intencji często deklaruje element
<data>, który zawiera tylko atrybutandroid:mimeType.Uwaga: dopasowywanie typu MIME w ramach Androida jest zależne od wielkości liter, w przeciwieństwie do formalnych typów MIME RFC. Dlatego zawsze używaj małych liter, aby określić typy MIME.
- wprowadzona w:
- Poziom API 1
- Zobacz też:
<action><category>
<dane>
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-27 UTC."],[],[]]