<dane>

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, atrybut port 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.

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 zamiast http:.

Jeśli filtr ma ustawiony typ danych (za pomocą atrybutu mimeType), ale nie ma schematu, zakłada się schematy content:file:.

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 do www.google.com, .google.com i developer.google.com.

Gwiazda musi być pierwszym znakiem atrybutu hosta. Na przykład hostgoogle.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 schemehost.
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
Ścieżka w identyfikatorze URI, która musi zaczynać się od /. Atrybut path określa pełną ścieżkę, która jest dopasowywana do pełnej ścieżki w obiekcie Intent. Atrybut pathPrefix określa częściową ścieżkę, która jest dopasowywana tylko do początkowej części ścieżki w obiekcie Intent.

Atrybut pathSuffix jest dopasowywany dokładnie do końcowej części ścieżki w obiekcie Intent. Nie musi on zaczynać się od znaku /. Atrybut pathPattern określa pełną ścieżkę, która jest dopasowywana do pełnej ścieżki w obiekcie Intent, 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 obiektu Intent. 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.
Wyraźniej 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_SUFFIXPATTERN_ADVANCED_GLOB w klasie PatternMatcher.

Te atrybuty mają znaczenie tylko wtedy, gdy w filtrze są też określone atrybuty schemehost.

pathSuffixpathAdvancedPattern zostały wprowadzone na poziomie interfejsu API 31.

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 lub audio/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 atrybut android: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>