<dane>

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

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

Jeśli filtr ma zestaw typu danych (z użyciem atrybutu mimeType), ale nie ma schematu, przyjmuje się schematy content: i file:.

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 do www.google.com, .google.com i developer.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 i host.
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
Część ścieżki identyfikatora URI, która musi zaczynać się od /. Atrybut path określa pełną ścieżkę dopasowywaną do pełnej ścieżki w obiekcie Intent. Atrybut pathPrefix określa częściową ścieżkę dopasowywaną tylko do początkowej części ścieżki w obiekcie Intent.

Atrybut pathSuffix jest dopasowany dokładnie 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ę porównywaną z pełną ścieżką w obiekcie Intent, 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 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] 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.
Dopasowanie 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 i PATTERN_ADVANCED_GLOB w klasie PatternMatcher.

Te atrybuty mają znaczenie tylko wtedy, gdy w filtrze określono też atrybuty scheme i host.

Wprowadziliśmy pathSuffix i pathAdvancePattern na poziomie API 31.

android:mimeType
Typ mediów MIME, np. image/jpeg lub audio/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 atrybut android: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>