- 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 określa typ 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 jego części:<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]
Te atrybuty określające format identyfikatora URI są opcjonalne, ale także wzajemnie zależne:
- Jeśli w filtrze intencji nie określisz wartości
scheme
, wszystkie pozostałe atrybuty URI będą ignorowane. - Jeśli w filtrze nie określisz wartości
host
, atrybutport
i wszystkie atrybuty ścieżki będą ignorowane.
Wszystkie elementy
<data>
w tym samym elemencie<intent-filter>
wchodzą w skład tego samego filtra. Na przykład ta specyfikacja filtra:<intent-filter . . . > <data android:scheme="something" android:host="project.example.com" /> ... </intent-filter>
jest odpowiednikiem tego:
<intent-filter . . . > <data android:scheme="something" /> <data android:host="project.example.com" /> ... </intent-filter>
W elemencie
<intent-filter>
możesz umieścić dowolną liczbę elementów<data>
, aby umożliwić mu różne opcje danych. Żaden z atrybutów nie ma wartości domyślnej.Informacje o działaniu filtrów intencji, w tym o regułach dopasowywania obiektów intencji do filtrów, znajdziesz w sekcji poświęconej intencjom i filtrom intencji oraz w sekcji filtry intencji w omówieniu pliku manifestu.
- Jeśli w filtrze intencji nie określisz wartości
- atrybuty:
android:scheme
- Schemat identyfikatora URI. Jest to minimalny podstawowy atrybut
przy określaniu identyfikatora URI. Musisz ustawić co najmniej jeden atrybut
scheme
dla filtra. Jeśli tak nie jest, żaden inny atrybut URI nie ma znaczenia.Schemat jest określony bez dwukropka, np.
http
zamiasthttp:
.Jeśli filtr ma zestaw typu danych (z użyciem atrybutu
mimeType
), ale nie ma schematu, przyjmuje się schematycontent:
ifile:
.Uwaga: w przeciwieństwie do RFC w ramach dopasowywania schematów w platformie Androida wielkość liter jest rozróżniana. Dlatego zawsze określaj schematy za pomocą małych liter.
android:host
-
Część hosta identyfikatora URI. Ten atrybut nie ma znaczenia, chyba że dla filtra określono też atrybut
scheme
. Aby dopasować wiele subdomen, użyj gwiazdki (*
), aby dopasować zero lub więcej znaków do hosta. Na przykład host*.google.com
pasuje dowww.google.com
,.google.com
ideveloper.google.com
.Gwiazdka musi być pierwszym znakiem atrybutu hosta. Na przykład host
google.co.*
jest nieprawidłowy, ponieważ symbol wieloznaczny z gwiazdką nie jest pierwszym znakiem.Uwaga: w przeciwieństwie do formalnego RFC podczas dopasowywania nazw hostów w platformie Androida wielkość liter jest rozróżniana. W związku z tym nazwy hostów zawsze podawaj małymi literami.
android:port
- Część portu identyfikatora URI. Ten atrybut ma znaczenie tylko wtedy, gdy w filtrze określono też atrybuty
scheme
ihost
. android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
- Część ścieżki identyfikatora URI, która musi zaczynać się od
/
. Atrybutpath
określa pełną ścieżkę dopasowywaną 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 dopasowany dokładnie do końcowej części ścieżki w obiekcieIntent
i nie musi zaczynać się od znaku/
. AtrybutpathPattern
określa pełną ścieżkę porównywaną z pełną ścieżką w obiekcieIntent
, ale może zawierać te symbole wieloznaczne:- Gwiazdka (
*
) odpowiada sekwencji od 0 do wielu wystąpień znaku bezpośrednio poprzedzającego go. - Kropka, po której następuje gwiazdka (
.*
), 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 (
[...]
) pasuje do zakresów znaków. Na przykład[0-5]
pasuje do pojedynczej cyfry z zakresu od 0 do 5 , ale nie do liczby od 6 do 9.[a-zA-Z]
odpowiada dowolnej literze, niezależnie od wielkości liter. Zestawy obsługują też modyfikator „nie”^
. -
Modyfikator gwiazdki (
*
) pasuje do poprzedniego wzorca zero lub więcej razy. -
Modyfikator plusa (
+
) pasuje do poprzedniego wzorca co najmniej raz. -
Modyfikator zakresu (
{...}
) określa, ile razy może zostać dopasowany wzór.
pathAdvancedPattern
to implementacja oceny, w której dopasowanie jest przeprowadzane na podstawie wzorca w czasie rzeczywistym, bez obsługi śledzenia wstecznego.Ponieważ
\
jest używany jako znak zmiany znaczenia podczas odczytu ciągu znaków z pliku XML, przed jego analizą jako wzorca trzeba zastosować podwójną zmianę znaczenia. Na przykład literał*
jest zapisywany jako\\*
, a literał\
jako\\\
. Działa to tak jak tekst, gdy tworzysz ciąg znaków w Javie.Więcej informacji o tych 5 typach wzorców znajdziesz w opisach znaczników
PATTERN_LITERAL
,PATTERN_PREFIX
,PATTERN_SIMPLE_GLOB
,PATTERN_SUFFIX
iPATTERN_ADVANCED_GLOB
w klasiePatternMatcher
.Te atrybuty mają znaczenie tylko wtedy, gdy w filtrze określono też atrybuty
scheme
ihost
.Wprowadziliśmy
pathSuffix
ipathAdvancePattern
na poziomie API 31. - Gwiazdka (
android:mimeType
- Typ mediów MIME, np.
image/jpeg
lubaudio/mpeg4-generic
. Podtypem może być symbol wieloznaczny z gwiazdką (*
), który wskazuje dopasowanie dowolnego podtypu.Filtr intencji często deklaruje element
<data>
, który zawiera tylko atrybutandroid:mimeType
.Uwaga: w odróżnieniu od formalnych typów MIME RFC w przypadku dopasowywania typów MIME w Androidzie rozróżniana jest wielkość liter. W związku z tym zawsze określaj typy MIME za pomocą małych liter.
- wprowadzone w:
- Poziom interfejsu 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-04-02 UTC.
[]
[]