- składnia:
<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" />
- zawarte w:
<intent-filter>
- description:
- Dodaje specyfikację danych do filtra intencji. Specyfikacja jest typem danych za pomocą atrybutu
mimeType
, identyfikatora URI lub zarówno typu danych, jak i identyfikatora URI. Identyfikator URI jest określany przez osobne atrybuty dla każdej części:<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]
Te atrybuty określające format identyfikatora URI są opcjonalne, ale są też wzajemnie zależne:
- Jeśli w filtrze intencji nie określisz parametru
scheme
, pozostałe atrybuty identyfikatora URI będą ignorowane. - Jeśli filtr
host
nie ma określonej wartości, atrybutport
i wszystkie atrybuty ścieżki są ignorowane.
Wszystkie elementy
<data>
w obrębie tego samego elementu<intent-filter>
składają się na ten sam filtr. Przykładowo ta specyfikacja filtra:<intent-filter . . . > <data android:scheme="something" android:host="project.example.com" /> ... </intent-filter>
jest odpowiednikiem tej:
<intent-filter . . . > <data android:scheme="something" /> <data android:host="project.example.com" /> ... </intent-filter>
W
<intent-filter>
możesz umieścić dowolną liczbę elementów<data>
, aby dać mu wiele opcji danych. Żaden z jego atrybutów nie ma wartości domyślnych.Więcej informacji o działaniu filtrów intencji, w tym o regułach dopasowywania obiektów intencji do filtrów, znajdziesz w sekcji dotyczącej intencji i filtrów intencji oraz w sekcji Filtry intencji w omówieniu pliku manifestu.
- Jeśli w filtrze intencji nie określisz parametru
- atrybuty:
android:scheme
- Część schematu identyfikatora URI. Jest to najprostszy atrybut,
który jest niezbędny do określania identyfikatora URI. Musisz ustawić co najmniej 1 atrybut
scheme
dla filtra lub żaden z pozostałych atrybutów URI nie jest przydatny.Schemat jest określony bez dwukropka na końcu, np.
http
zamiasthttp:
.Jeśli filtr ma ustawiony typ danych (za pomocą atrybutu
mimeType
), ale nie ma schematu, przyjmuje się schematycontent:
ifile:
.Uwaga: w dopasowaniu schematu w ramach platformy Androida wielkość liter ma znaczenie, w przeciwieństwie do standardu RFC. Dlatego zawsze określaj schematy, używając małych liter.
android:host
-
Część hosta identyfikatora URI. Ten atrybut jest bez znaczenia, chyba że w filtrze jest też określony atrybut
scheme
. Aby dopasować wiele subdomen, użyj gwiazdki (*
), aby dopasować zero lub więcej znaków w hoście. Na przykład host*.google.com
pasuje dowww.google.com
,.google.com
ideveloper.google.com
.Gwiazdka musi być pierwszym znakiem atrybutu host. Na przykład host
google.co.*
jest nieprawidłowy, ponieważ symbol wieloznaczny nie jest pierwszym znakiem.Uwaga: w przeciwieństwie do formalnego RFC podczas dopasowywania nazw hostów w ramach platformy Androida rozróżniana jest wielkość liter. Z tego względu nazwy hostów zawsze podawaj małymi literami.
android:port
- Część portu w urzędzie URI. Ten atrybut ma znaczenie tylko wtedy, gdy filtr zawiera też atrybuty
scheme
ihost
. android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
- Część ścieżki identyfikatora URI, która musi się zaczynać 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ę dopasowywaną 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
. Ten atrybut nie musi zaczynać się znakiem/
. AtrybutpathPattern
określa pełną ścieżkę, która jest dopasowywana do pełnej ścieżki w obiekcieIntent
, ale może zawierać te symbole wieloznaczne:- Gwiazdka (
*
) odpowiada sekwencji od 0 do wielu wystąpień bezpośrednio poprzedzającego znak. - 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
i obsługuje te wzorce podobne do wyrażeń regularnych:-
Kropka (
.
) odpowiada dowolnemu znakowi. -
Zestaw (
[...]
) odpowiada zakresom znaków. Na przykład[0-5]
odpowiada pojedynczej cyfrze z zakresu od 0 do 5 , ale nie zawiera cyfr od 6 do 9.[a-zA-Z]
pasuje do dowolnej litery, niezależnie od wielkości liter. Zestawy obsługują też modyfikator^
„nie”. -
Modyfikator gwiazdki (
*
) pasuje do poprzedniego wzorca co najmniej 0 razy. -
Modyfikator plusa (
+
) co najmniej raz pasuje do poprzedniego wzorca. -
Modyfikator zakresu (
{...}
) określa, ile razy wzorzec może się zgadzać.
pathAdvancedPattern
to implementacja oceny, w której dopasowywanie odbywa się w czasie rzeczywistym do wzorca bez obsługi śledzenia wstecznego.Ponieważ
\
jest używany jako znak zmiany znaczenia podczas odczytywania ciągu znaków z kodu XML, zanim zostanie on przetworzony jako wzorzec, trzeba będzie podwójnie zmienić znaczenie ciągu. Na przykład literał*
jest zapisany jako\\*
, a literał\
– jako\\\
. Przypomina to sposób, w jaki wpisujesz ciąg znaków w kodzie Javy.Więcej informacji o tych 5 typach wzorców znajdziesz w opisach
PATTERN_LITERAL
,PATTERN_PREFIX
,PATTERN_SIMPLE_GLOB
,PATTERN_SUFFIX
iPATTERN_ADVANCED_GLOB
w klasiePatternMatcher
.Te atrybuty mają znaczenie tylko wtedy, gdy w filtrze zostały też określone atrybuty
scheme
ihost
.Wersje
pathSuffix
ipathAdvancedPattern
zostały wprowadzone w interfejsie API na poziomie 31. - Gwiazdka (
android:mimeType
- Typ multimediów MIME, na przykład
image/jpeg
lubaudio/mpeg4-generic
. Podtypem może być symbol wieloznaczny z gwiazdką (*
), który wskazuje, że pasuje dowolny podtyp.Często filtr intencji deklaruje element
<data>
, który zawiera tylko atrybutandroid:mimeType
.Uwaga: w przeciwieństwie do formalnych typów MIME w standardzie RFC podczas dopasowywania typów MIME w platformie Androida wielkość liter ma znaczenie. Dlatego zawsze określaj typy MIME, używając małych liter.
- wprowadzone 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-06-21 UTC.
[]
[]