<dane>

Składnia:
Jeśli tag danych jest bezpośrednim elementem podrzędnym tagu <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 jest typem danych, który używa atrybutu mimeType, identyfikatora URI lub zarówno typu danych, jak i identyfikatora URI. Identyfikator URI jest określany przez oddzielne 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 też wzajemnie od siebie zależne:

  • Jeśli w filtrze intencji nie określono scheme, wszystkie pozostałe atrybuty URI są ignorowane.
  • Jeśli w filtrze nie określono host, atrybut port i wszystkie atrybuty ścieżki są ignorowane.

Wszystkie elementy <data> zawarte w tym samym elemencie <intent-filter> przyczyniają się do tego samego filtra. Na przykład ta specyfikacja filtra:

<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żna 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>

W elemencie <data> możesz umieścić dowolną liczbę elementów <intent-filter>, aby zapewnić mu wiele opcji danych. Żaden z jego atrybutów nie ma wartości domyślnych.

Informacje o działaniu filtrów intencji, w tym reguły dopasowywania obiektów intencji do filtrów, znajdziesz w artykułach Intencje i filtry intencji oraz w sekcji Filtry intencji w omówieniu pliku manifestu.

atrybuty:
android:scheme
Część schematu identyfikatora URI. Jest to minimalny atrybut niezbędny do określenia identyfikatora URI. W przypadku filtra musi być ustawiony co najmniej 1 atrybut scheme. W przeciwnym razie żaden z pozostałych atrybutów URI nie będzie miał znaczenia.

Schemat jest określony bez dwukropka na końcu, 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: dopasowywanie schematów w platformie Androida uwzględnia wielkość liter, w przeciwieństwie do RFC. Dlatego zawsze podawaj schematy, używając małych liter.

android:host
Część hosta urzędu protokołu URI. Ten atrybut nie ma znaczenia, chyba że dla filtra określono też atrybut scheme. Aby dopasować wiele subdomen, użyj gwiazdki (*), która zastępuje zero lub więcej znaków w hoście. Na przykład host *.google.com pasuje do www.google.com, .google.comdeveloper.google.com.

Gwiazdka musi być pierwszym znakiem atrybutu host. Na przykład host google.co.* jest nieprawidłowy, ponieważ symbol wieloznaczny gwiazdki nie jest pierwszym znakiem.

Uwaga: dopasowywanie nazw hostów w platformie Android uwzględnia wielkość liter, w przeciwieństwie do formalnego RFC. Dlatego nazwy hostów należy zawsze podawać małymi literami.

android:port
Część portu w urzędzie protokołu URI. Ten atrybut ma znaczenie tylko wtedy, gdy dla filtra są też określone atrybuty scheme i host.
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
Ścieżka w identyfikatorze URI, która musi zaczynać się od znaku /. Atrybut path określa pełną ścieżkę, która jest dopasowywana do pełnej ścieżki w obiekcie Intent. Atrybut pathPrefix określa ścieżkę częściową, która jest dopasowywana tylko do początkowej części ścieżki w obiekcie Intent.

Atrybut pathSuffix jest dokładnie dopasowywany do końcowej części ścieżki w obiekcie Intent i nie musi 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 symbole wieloznaczne:

  • Kropka (.) odpowiada dowolnemu znakowi.
  • Gwiazdka (*) odpowiada sekwencji od zera do wielu wystąpień znaku bezpośrednio poprzedzającego.
  • Kropka, po której następuje gwiazdka (.*), odpowiada dowolnej sekwencji od zera do wielu znaków.

Atrybut pathAdvancedPattern określa pełną ścieżkę, która jest dopasowywana do pełnej ścieżki obiektu Intent 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] odpowiada pojedynczej cyfrze z zakresu od 0 do 5 , ale nie z zakresu od 6 do 9. [a-zA-Z] pasuje do dowolnej litery, niezależnie od wielkości. Zbiory obsługują też modyfikator „not” ^.
  • Modyfikator gwiazdki (*) dopasowuje poprzedni wzorzec zero lub więcej razy.
  • Modyfikator plus (+) dopasowuje poprzedni wzorzec co najmniej raz.
  • Modyfikator zakresu ({...}) określa, ile razy wzorzec może być dopasowany.
pathAdvancedPattern to implementacja oceny, w której dopasowywanie odbywa się do wzorca w czasie rzeczywistym bez obsługi wycofywania.

Ponieważ znak \ jest używany jako znak zmiany znaczenia, gdy ciąg znaków jest odczytywany z pliku XML, przed jego przeanalizowaniem jako wzorca musisz zastosować podwójną zmianę znaczenia. Na przykład znak * jest zapisywany jako \\*, a znak \ jako \\\\. Jest to podobne do tego, co piszesz podczas tworzenia ciągu znaków w kodzie Java.

Więcej informacji o tych 5 rodzajach wzorców znajdziesz w opisach PATTERN_LITERAL, PATTERN_PREFIX, PATTERN_SIMPLE_GLOB, PATTERN_SUFFIXPATTERN_ADVANCED_GLOB w klasie PatternMatcher.

Te atrybuty mają znaczenie tylko wtedy, gdy dla filtra określono też atrybuty schemehost.

pathSuffixpathAdvancedPattern zostały wprowadzone na poziomie API 31.

android:fragment
android:fragmentPrefix
android:fragmentSuffix
android:fragmentPattern
android:fragmentAdvancedPattern

Element dopasowujący fragment identyfikatora URI. Nie dodawaj prefiksu #. Powyżej znajdziesz znaczenie każdego atrybutu i wzorce, które są w nim dozwolone.

Aby dopasować znaki, które są zwykle kodowane w identyfikatorze URI, uwzględnij w wartości atrybutu formę nieprzetworzoną (niezakodowaną). Na przykład <data android:fragment="test!" /> pasuje do #test!#test%21.

Wprowadzono na poziomie API 35.

android:query
android:queryPrefix
android:querySuffix
android:queryPattern
android:queryAdvancedPattern

Wzorzec parametru zapytania URI (i opcjonalnie wartości). Możesz na przykład dopasować identyfikatory URI kończące się ciągiem ?param=value do ciągu <data android:query="param=value" />. Nie dodawaj prefiksu ?. Powyżej znajdziesz znaczenie i wzorce dozwolone w przypadku każdego atrybutu.

Aby dopasować znaki, które są zwykle kodowane w URI, uwzględnij w wartości atrybutu formę surową (niezakodowaną). Na przykład <data android:query="test!" /> pasuje do ?test!?test%21.

Wprowadzono na poziomie API 35.

android:mimeType
Typ MIME, np. image/jpeg lub audio/mpeg4-generic. Podtyp może być symbolem wieloznacznym w postaci gwiazdki (*), co oznacza, że pasuje dowolny podtyp.

Często filtr intencji deklaruje element <data>, który zawiera tylko atrybut android:mimeType.

Uwaga: dopasowywanie typów MIME w platformie Android uwzględnia wielkość liter, w przeciwieństwie do formalnych typów MIME RFC. Dlatego zawsze określaj typy MIME małymi literami.

wprowadzony w:
Poziom API 1
Zobacz też:
<action>
<category>