- 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
, atrybutport
i 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="project.example.com" /> ... </intent-filter>
jest równoważne temu:
<intent-filter . . . > <data android:scheme="something" /> <data android:host="project.example.com" /> ... </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 na końcu dwukropka, np.
http
zamiasthttp:
.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 używaj 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.com
pasuje dowww.google.com
,.google.com
ideveloper.google.com
.Gwiazda 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 nazw hostów 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
scheme
ihost
. android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
- Ścieżka w identyfikatorze URI, która musi zaczynać się od
/
. Atrybutpath
określa pełną ścieżkę, która jest dopasowywana do pełnej ścieżki w obiekcieIntent
. AtrybutpathPrefix
określa częściową ścieżkę, która jest dopasowywana tylko do początkowej części ścieżki w obiekcieIntent
.Atrybut
pathSuffix
jest dopasowywany dokładnie do końcowej części ścieżki w obiekcieIntent
. Nie musi on zaczynać się od znaku/
. AtrybutpathPattern
określa pełną ścieżkę, która jest dopasowywana do pełnej ścieżki w obiekcieIntent
, ale może zawierać te zmienne wieloznaczne:- 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
pathAdvancedPattern
określa pełną ścieżkę, która jest dopasowywana do pełnej ścieżki obiektuIntent
. Obsługuje on 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.
pathAdvancedPattern
to implementacja oceny, w której dopasowywanie odbywa się w czasie rzeczywistym na podstawie wzorca bez obsługi cofania.Ponieważ znak
\
jest używany jako znak ucieczki podczas odczytu ciągu z pliku XML, zanim zostanie on przeanalizowany jako wzór, 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_SUFFIX
iPATTERN_ADVANCED_GLOB
w klasiePatternMatcher
.Te atrybuty mają znaczenie tylko wtedy, gdy w filtrze są też określone atrybuty
scheme
ihost
.pathSuffix
ipathAdvancedPattern
zostały wprowadzone na poziomie interfejsu API 31. - Gwiazdka (
android:fragment
android:fragmentPrefix
android:fragmentSuffix
android:fragmentPattern
android: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
.Wprowadzono na poziomie API 35.
android:query
android:queryPrefix
android:querySuffix
android:queryPattern
android:queryAdvancedPattern
-
Dopasowywacz parametru zapytania URI (i opcjonalnie wartości). Możesz na przykład dopasowywać identyfikatory URI kończące się ciągiem
?param=value
do 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 API 35.
android:mimeType
- Typ multimediów MIME, np.
image/jpeg
lubaudio/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>
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: 2024-12-21 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: 2024-12-21 UTC."],[],[]]