<Daten>

Syntax:
Wenn das Datentag das unmittelbare untergeordnete Element von <intent-filter> ist:
<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" />

Wenn das Daten-Tag das unmittelbare untergeordnete Element eines <uri-relative-filter-group> ist:
<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" />
Enthalten in:
<intent-filter>
<uri-relative-filter-group>
description:
Fügt einem Intent-Filter eine Datenspezifikation hinzu. Die Spezifikation ist ein Datentyp, ein URI oder sowohl ein Datentyp als auch ein URI, die mit dem Attribut mimeType angegeben werden. Ein URI wird durch separate Attribute für die einzelnen Teile angegeben:

<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]

Diese Attribute, die das URI-Format angeben, sind optional, aber auch voneinander abhängig:

  • Wenn für den Intent-Filter kein scheme angegeben ist, werden alle anderen URI-Attribute ignoriert.
  • Wenn für den Filter kein host angegeben ist, werden das Attribut port und alle Pfadattribute ignoriert.

Alle <data>-Elemente, die im selben <intent-filter>-Element enthalten sind, tragen zum selben Filter bei. Die folgende Filterspezifikation:

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

entspricht:

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

Sie können beliebig viele <data>-Elemente in ein <intent-filter>-Element einfügen, um mehrere Datenoptionen zu erhalten. Keines seiner Attribute hat Standardwerte.

Informationen zur Funktionsweise von Intent-Filtern, einschließlich der Regeln für den Abgleich von Intent-Objekten mit Filtern, finden Sie unter Intents und Intent-Filter und im Abschnitt Intent-Filter> in der Übersicht über die Manifestdatei.

Attribute:
android:scheme
Der Schemateil eines URI. Dies ist das minimale erforderliche Attribut zum Angeben eines URI. Für den Filter muss mindestens ein scheme-Attribut festgelegt sein, da sonst keines der anderen URI-Attribute sinnvoll ist.

Ein Schema wird ohne das nachgestellte Doppelpunkt angegeben, z. B. http anstelle von http:.

Wenn für den Filter ein Datentyp (mit dem Attribut mimeType) festgelegt ist, aber kein Schema, werden die Schemas content: und file: angenommen.

Hinweis: Der Schemabgleich im Android-Framework ist im Gegensatz zum RFC-Standard nicht case-sensitiv. Geben Sie Schemas daher immer in Kleinbuchstaben an.

android:host
Der Host-Teil einer URI-Autorität. Dieses Attribut ist nur sinnvoll, wenn auch ein scheme-Attribut für den Filter angegeben ist. Wenn Sie mehrere Subdomains abgleichen möchten, verwenden Sie ein Sternchen (*), um null oder mehr Zeichen im Host abzugleichen. Der Host *.google.com stimmt beispielsweise mit www.google.com, .google.com und developer.google.com überein.

Das Sternchen muss das erste Zeichen des Host-Attributs sein. Der Host google.co.* ist beispielsweise ungültig, da der Platzhalter „*“ nicht das erste Zeichen ist.

Hinweis: Der Hostname-Abgleich im Android-Framework ist im Gegensatz zum formalen RFC-Standard case-sensitive. Geben Sie Hostnamen daher immer mit Kleinbuchstaben an.

android:port
Der Portteil einer URI-Autorität. Dieses Attribut ist nur sinnvoll, wenn auch die Attribute scheme und host für den Filter angegeben sind.
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
Der Pfadteil eines URI, der mit einem / beginnen muss. Das Attribut path gibt einen vollständigen Pfad an, der mit dem vollständigen Pfad in einem Intent-Objekt abgeglichen wird. Das Attribut pathPrefix gibt einen Teilpfad an, der nur mit dem ersten Teil des Pfads im Intent-Objekt abgeglichen wird.

Das Attribut pathSuffix wird genau mit dem Endteil des Pfads im Intent-Objekt abgeglichen. Dieses Attribut muss nicht mit dem Zeichen / beginnen.

Das Attribut pathPattern gibt einen vollständigen Pfad an, der mit dem vollständigen Pfad im Intent-Objekt abgeglichen wird. Es kann jedoch die folgenden Platzhalter enthalten:

  • Ein Punkt (.) entspricht einem beliebigen Zeichen.
  • Ein Sternchen (*) entspricht einer Sequenz von null bis vielen Vorkommen des unmittelbar vorangehenden Zeichens.
  • Ein Punkt gefolgt von einem Sternchen (.*) entspricht einer beliebigen Folge von null bis vielen Zeichen.

Das Attribut pathAdvancedPattern gibt einen vollständigen Pfad an, der mit dem vollständigen Pfad des Intent-Objekts abgeglichen wird. Es unterstützt die folgenden regex-ähnlichen Muster:

  • Ein Punkt (.) entspricht einem beliebigen Zeichen.
  • Ein Set ([...]) entspricht Zeichenbereichen. Beispiel: [0-5] entspricht einer einzelnen Ziffer von 0 bis 5 , aber nicht 6 bis 9. [a-zA-Z] entspricht einem beliebigen Buchstaben, unabhängig von der Groß-/Kleinschreibung. Sets unterstützen auch den Modifikator „not“ ^.
  • Der Modifikator „Sternchen“ (*) entspricht dem vorangehenden Muster keinmal oder mehrmals.
  • Der Modifizierer „+“ (+) entspricht dem vorangehenden Muster mindestens einmal.
  • Der Bereichsmodifikator ({...}) gibt an, wie oft ein Muster übereinstimmen kann.
Der pathAdvancedPattern-Matcher ist eine Implementierung der Auswertung, bei der der Abgleich in Echtzeit mit dem Muster erfolgt und kein Backtracking unterstützt wird.

Da \ als Escape-Zeichen verwendet wird, wenn der String aus XML gelesen wird, bevor er als Muster geparst wird, müssen Sie ihn doppelt maskieren. Beispiel: Das Literal * wird als \\* und das Literal \ als \\\\ geschrieben. Das entspricht dem, was Sie beim Erstellen des Strings in Java-Code schreiben.

Weitere Informationen zu diesen fünf Mustertypen finden Sie in der Beschreibung von PATTERN_LITERAL, PATTERN_PREFIX, PATTERN_SIMPLE_GLOB, PATTERN_SUFFIX und PATTERN_ADVANCED_GLOB in der Klasse PatternMatcher.

Diese Attribute sind nur sinnvoll, wenn auch die Attribute scheme und host für den Filter angegeben sind.

pathSuffix und pathAdvancedPattern wurden in API-Level 31 eingeführt.

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

Ein Abgleich für ein URI-Fragment. Geben Sie nicht das Präfix # an. Oben finden Sie die Bedeutung und die zulässigen Muster für die einzelnen Attribute.

Wenn Sie Zeichen abgleichen möchten, die normalerweise URI-codiert sind, geben Sie die Rohform (nicht codiert) im Attributwert an. Beispielsweise führt <data android:fragment="test!" /> zu Übereinstimmungen mit #test! und #test%21.

Eingeführt in API-Level 35.

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

Ein Abgleich für einen URI-Abfrageparameter (und optional einen Wert). So können Sie beispielsweise URIs, die mit ?param=value enden, mit <data android:query="param=value" /> abgleichen. Geben Sie nicht das Präfix ? an. Oben finden Sie die Bedeutung und die in den einzelnen Attributen zulässigen Muster.

Wenn Sie Zeichen abgleichen möchten, die normalerweise URI-codiert sind, geben Sie die Rohform (nicht codiert) im Attributwert an. Beispielsweise führt <data android:query="test!" /> zu Übereinstimmungen mit ?test! und ?test%21.

Eingeführt in API-Level 35.

android:mimeType
Ein MIME-Medientyp wie image/jpeg oder audio/mpeg4-generic. Der Untertyp kann der Platzhalter * sein, um anzugeben, dass ein beliebiger Untertyp übereinstimmt.

Häufig wird in einem Intent-Filter ein <data>-Element deklariert, das nur das Attribut android:mimeType enthält.

Hinweis: Der MIME-Typ-Abgleich im Android-Framework ist im Gegensatz zu formalen RFC-MIME-Typen case-sensitive. Geben Sie MIME-Typen daher immer in Kleinbuchstaben an.

Eingeführt in:
API‑Level 1
Siehe auch:
<action>
<category>