<Daten>

syntax:
Wenn das Daten-Tag das unmittelbare untergeordnete Element eines <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, der das mimeType-Attribut, einen URI oder sowohl einen Datentyp als auch einen URI verwendet. Ein URI wird durch separate Attribute für jeden seiner 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 port-Attribut und alle Pfadattribute ignoriert.

Alle <data>-Elemente, die sich im selben <intent-filter>-Element befinden, tragen zum selben Filter bei. So sieht beispielsweise die folgende Filterspezifikation aus:

<intent-filter . . . >
    <data android:scheme="something" android:host="project.example.com" />
    ...
</intent-filter>

ist gleichbedeutend mit:

<intent-filter . . . >
    <data android:scheme="something" />
    <data android:host="project.example.com" />
    ...
</intent-filter>

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

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

attributes:
android:scheme
Der Schemateil eines URI. Dies ist das Mindestattribut, das für die Angabe eines URI erforderlich ist. 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 abschließende Doppelpunktzeichen angegeben, z. B. http anstelle von http:.

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

Hinweis: Im Android-Framework ist die Schemaabgleichung im Gegensatz zum RFC case-sensitive. Geben Sie daher immer Schemas in Kleinbuchstaben an.

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

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

Hinweis: Im Android-Framework wird beim Abgleich von Hostnamen im Gegensatz zum formellen RFC die Groß- und Kleinschreibung berücksichtigt. Geben Sie daher immer Hostnamen in Kleinbuchstaben an.

android:port
Der Portteil einer URI-Berechtigung. Dieses Attribut ist nur dann 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 path-Attribut gibt einen vollständigen Pfad an, der mit dem vollständigen Pfad in einem Intent-Objekt abgeglichen wird. Das pathPrefix-Attribut gibt einen Teilpfad an, der nur mit dem Anfangsteil des Pfads im Intent-Objekt abgeglichen wird.

Das pathSuffix-Attribut wird genau mit dem Endteil des Pfads im Intent-Objekt abgeglichen. Dieses Attribut muss nicht mit dem Zeichen / beginnen. Das pathPattern-Attribut 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 Sternchen (*) entspricht einer Folge von null bis vielen Vorkommen des unmittelbar vorausgehenden Zeichens.
  • Ein Punkt gefolgt von einem Sternchen (.*) entspricht einer beliebigen Zeichenfolge mit null bis vielen Zeichen.

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

  • Ein Punkt (.) entspricht einem beliebigen Zeichen.
  • Ein Satz ([...]) entspricht einem Zeichenbereich. Beispiel: [0-5] stimmt beispielsweise mit einer einzelnen Ziffer zwischen 0 und 5 überein , aber nicht mit 6 bis 9. [a-zA-Z] stimmt mit einem beliebigen Buchstaben überein, unabhängig von der Groß- und Kleinschreibung. Für Sets wird auch der Modifikator „nicht“ ^ unterstützt.
  • Der Modifikator „Sternchen“ (*) entspricht null oder mehrmals dem vorangehenden Muster.
  • Der Modifizierer „Plus“ (+) entspricht dem vorangehenden Muster einmal oder mehrmals.
  • Mit dem Modifikator „Bereich“ ({...}) wird angegeben, wie oft ein Muster übereinstimmen kann.
Der pathAdvancedPattern-Abgleich ist eine Bewertungsimplementierung, bei der der Abgleich in Echtzeit ohne Backtracking-Unterstützung mit dem Muster erfolgt.

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

Weitere Informationen zu diesen fünf Arten von Mustern finden Sie in den Beschreibungen von PATTERN_LITERAL, PATTERN_PREFIX, PATTERN_SIMPLE_GLOB, PATTERN_SUFFIX und PATTERN_ADVANCED_GLOB in der Klasse PatternMatcher.

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

pathSuffix und pathAdvancedPattern wurden mit 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. Die Bedeutung und zulässigen Muster für die einzelnen Attribute finden Sie oben.

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

Einführung in API-Ebene 35.

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

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

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

Einführung in API-Ebene 35.

android:mimeType
Ein MIME-Medientyp wie image/jpeg oder audio/mpeg4-generic. Der Untertyp kann der Sternchen-Platzhalter (*) sein, um anzugeben, dass mit jedem Untertyp übereinstimmt werden soll.

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

Hinweis: Im Android-Framework ist die MIME-Typ-Übereinstimmung im Gegensatz zu formellen RFC-MIME-Typen nicht groß- und kleinschreibungsempfindlich. Geben Sie MIME-Typen daher immer in Kleinbuchstaben an.

eingeführt in:
API-Level 1
Weitere Informationen:
<action>
<category>