<Daten>

Syntax:
<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" />
enthalten in:
<intent-filter>
description:
Fügt einem Intent-Filter eine Datenspezifikation hinzu. Die Spezifikation ist ein Datentyp, für den das Attribut mimeType, ein URI oder sowohl ein Datentyp als auch ein URI verwendet werden. Ein URI wird durch separate Attribute für die einzelnen Teile angegeben:

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

Die folgenden Attribute, die das URI-Format angeben, sind optional, hängen aber auch voneinander ab:

  • 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 im selben <intent-filter>-Element gehören zum selben Filter. Beispielsweise würde die folgende Filterspezifikation:

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

entspricht diesem:

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

Sie können beliebig viele <data>-Elemente in eine <intent-filter> einfügen, um mehrere Datenoptionen zur Verfügung zu stellen. Keines der Attribute hat Standardwerte.

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

Attribute:
android:scheme
Der Schemateil eines URI. Dies ist das mindestens erforderliche Attribut für die Angabe eines URI. Für den Filter muss mindestens ein scheme-Attribut festgelegt sein oder keines der anderen URI-Attribute ist aussagekräftig.

Ein Schema wird ohne nachgestellten Doppelpunkt angegeben, z. B. http statt http:.

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

Hinweis: Beim Schemaabgleich im Android-Framework wird im Gegensatz zum RFC zwischen Groß- und Kleinschreibung unterschieden. Geben Sie daher Schemas immer mit Kleinbuchstaben an.

android:host
Der Hostteil einer URI-Berechtigung. Dieses Attribut ist bedeutungslos, wenn nicht auch ein scheme-Attribut für den Filter angegeben wird. 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 Hostattributs sein. Der Host google.co.* ist beispielsweise ungültig, da der Sternchenplatzhalter nicht das erste Zeichen ist.

Hinweis: Beim Hostnamenabgleich im Android-Framework wird im Gegensatz zum formalen RFC zwischen Groß- und Kleinschreibung unterschieden. Geben Sie daher Hostnamen immer in Kleinbuchstaben an.

android:port
Der Portteil einer URI-Zertifizierungsstelle. Dieses Attribut ist nur sinnvoll, wenn auch die Attribute scheme und host für den Filter angegeben werden.
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
Der Pfadteil eines URI, der mit / 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 Anfangsteil des Pfads im Intent-Objekt abgeglichen wird.

Das Attribut pathSuffix wird genau mit dem letzten Teil des Pfads im Objekt Intent 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 Sternchen (*) entspricht einer Folge von null bis vielen Vorkommen des unmittelbar vorangehenden Zeichens.
  • Ein Punkt, auf den ein Sternchen (.*) folgt, entspricht einer beliebigen Sequenz von null bis viele 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 Satz ([...]) gleicht Zeichenbereiche ab. Beispielsweise entspricht [0-5] einer einzelnen Ziffer von 0 bis 5 , aber nicht von 6 bis 9. [a-zA-Z] entspricht jedem Buchstaben, unabhängig von der Groß-/Kleinschreibung. Sets unterstützen auch den ^-Modifikator „not“.
  • Das Sternchen (*)-Modifikator entspricht kein- oder öfter dem vorherigen Muster.
  • Der Plus-Modifikator (+) entspricht ein- oder mehrmals dem vorherigen Muster.
  • Der Bereichsmodifikator ({...}) gibt an, wie oft ein Muster übereinstimmen kann.
Der pathAdvancedPattern-Matcher ist eine Bewertungsimplementierung, bei der das Muster in Echtzeit und ohne Backtracking-Unterstützung abgeglichen wird.

Da \ beim Lesen aus XML als Escape-Zeichen verwendet wird, müssen Sie vor dem Parsen als Muster ein doppeltes Escapezeichen verwenden. Ein literales * wird beispielsweise als \\* und ein literales \ als \\\ geschrieben. Dies entspricht dem, was Sie beim Erstellen des Strings in Java-Code schreiben.

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 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:mimeType
Ein MIME-Medientyp, z. B. image/jpeg oder audio/mpeg4-generic. Als Untertyp kann der Sternchenplatzhalter (*) verwendet werden, um anzugeben, dass ein Untertyp übereinstimmt.

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

Hinweis: Beim MIME-Typabgleich im Android-Framework wird im Gegensatz zu formalen RFC-MIME-Typen zwischen Groß- und Kleinschreibung unterschieden. Geben Sie MIME-Typen daher immer mit Kleinbuchstaben an.

eingeführt in:
API-Level 1
Siehe auch:
<action>
<category>