- Syntax:
- Wenn das Datentag das unmittelbare untergeordnete Element eines
<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" />
Wenn das Datentag das unmittelbare untergeordnete Element von<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" />
- Enthalten in:
-
<intent-filter><uri-relative-filter-group> - Beschreibung:
- Fügt einem Intent-Filter eine Datenspezifikation hinzu. Die Spezifikation ist ein Datentyp, ein URI oder beides, wobei das Attribut
mimeTypeverwendet wird. 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
schemeangegeben ist, werden alle anderen URI-Attribute ignoriert. - Wenn für den Filter kein
hostangegeben ist, werden das Attributportund 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 dieser:
<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>einfügen, um mehrere Daten optionen zu definieren. 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 unter Intents und Intent-Filter und im Abschnitt Intent-Filter in der Übersicht über die Manifestdatei.
- Wenn für den Intent-Filter kein
- 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, andernfalls sind die anderen URI-Attribute nicht sinnvoll.Ein Schema wird ohne den nachgestellten Doppelpunkt angegeben, z. B.
httpanstelle vonhttp:.Wenn für den Filter ein Datentyp festgelegt ist (mit dem
mimeTypeAttribut), aber kein Schema, werden die Schemascontent:undfile:angenommen.Hinweis: Beim Abgleich von Schemas im Android-Framework wird die Groß-/Kleinschreibung berücksichtigt, anders als im RFC. Geben Sie Schemas daher immer in Kleinbuchstaben an.
android:host-
Der Hostteil einer URI-Autorität. Dieses Attribut ist nur sinnvoll, wenn für den Filter auch ein
scheme-Attribut angegeben ist. Wenn mehrere Subdomains abgeglichen werden sollen, verwenden Sie ein Sternchen (*), um null oder mehr Zeichen im Host abzugleichen. Der Host*.google.comstimmt beispielsweise mitwww.google.com,.google.comunddeveloper.google.comüberein.Das Sternchen muss das erste Zeichen des Attributs `host` sein. Der Host
google.co.*ist beispielsweise ungültig, da das Sternchen kein Platzhalter für das erste Zeichen ist.Hinweis: Beim Abgleich von Hostnamen im Android-Framework wird die Groß-/Kleinschreibung berücksichtigt, anders als im formalen RFC. Geben Sie Hostnamen daher immer in Kleinbuchstaben an.
android:port- Der Portteil einer URI-Autorität. Dieses Attribut ist nur sinnvoll, wenn für den Filter auch die Attribute
schemeundhostangegeben sind. android:pathandroid:pathPrefixandroid:pathSuffixandroid:pathPatternandroid:pathAdvancedPattern- Der Pfadteil eines URI, der mit einem
/beginnen muss. Das Attributpathgibt einen vollständigen Pfad an, der mit dem vollständigen Pfad in einemIntent-Objekt abgeglichen wird. Das AttributpathPrefixgibt einen Teilpfad an, der nur mit dem Anfangsteil des Pfads imIntent-Objekt abgeglichen wird.Das
pathSuffixAttribut wird genau mit dem Endteil des Pfads imIntentObjekt abgeglichen und muss nicht mit dem/Zeichen beginnen.Das Attribut
pathPatterngibt einen vollständigen Pfad an, der mit dem vollständigen Pfad imIntentObjekt abgeglichen wird. Es kann jedoch die folgenden Platzhalter enthalten:-
Ein Punkt (
.) stimmt mit einem beliebigen einzelnen Zeichen überein. Wenn Sie einen wörtlichen Punkt abgleichen möchten, müssen Sie ihn in Ihrem XML als\\.maskieren. -
Ein Sternchen (
*) stimmt mit einer Sequenz von null bis vielen Vorkommen des unmittelbar vorangehenden Zeichens überein. Beispielsweise stimmta*mit "a" und "aa" überein, aber stimmt nicht mit einem leeren String überein. -
Ein Punkt gefolgt von einem Sternchen (
.*) stimmt mit einer Sequenz von null oder mehr Zeichen überein. Beispielsweise stimmt.*mit einem leeren String überein undb.*stimmt mit „b“, „bc“ und „bcd“ überein.
Wichtige Hinweise zu
pathPattern:- Kein Backtracking: Der Musterabgleich von Android wertet Strings in einem einzigen Durchlauf ohne Backtracking aus. Wenn ein Platzhalter Zeichen verbraucht, die später in dem Muster benötigt werden, schlägt der Abgleich fehl.
-
.*ist nicht gierig:Der Platzhalter.*ist nicht gierig. Er verbraucht Zeichen, bis er das erste Vorkommen des nächsten wörtlichen Zeichens im Muster findet.-
"abc.*xyz"stimmt nicht mit"abcpxqrxyz"überein. Der Platzhalter.*stoppt nicht gierig beim ersten"x"(von"px..."). Der verbleibende String"qrxyz"stimmt nicht mit dem erwarteten"yz"überein. -
Warnung: Da
.*nach einer genauen Zeichenübereinstimmung sucht, um zu stoppen, stimmt"a.*.c"**nicht** mit"abbbc"überein. Der Abgleich behandelt den zweiten.als wörtlichen Punkt und durchsucht den String nach einem".". Wenn er das Ende erreicht, schlägt der Abgleich fehl.
-
-
*ist gierig: Ein bestimmtes Zeichen gefolgt von einem Sternchen (z. B.a*) ist gierig. Es verbraucht alle aufeinanderfolgenden Vorkommen dieses Zeichens, ohne vorauszuschauen.-
"a*a"stimmt nicht mit Strings wie"aaa"überein. Der Teila*verbraucht gierig alle drei"a"s. Das Muster erwartet dann das letzte"a", aber der String ist bereits erschöpft, sodass der Abgleich fehlschlägt.
-
- Best Practices:
-
Vermeiden Sie Muster, bei denen das Zeichen unmittelbar nach einem
*mit dem Zeichen davor identisch ist (z.B.a*a). -
Platzieren Sie keine Platzhalter unmittelbar nach
.*(z.B..*.oder.*.*). -
Wenn Sie ein Präfix abgleichen möchten, ist es sicherer und effizienter,
android:pathPrefixzu verwenden, anstatt einpathPatternmit.*zu beenden.
-
Vermeiden Sie Muster, bei denen das Zeichen unmittelbar nach einem
Das Attribut
pathAdvancedPatterngibt einen vollständigen Pfad an, der mit dem vollständigen Pfad desIntent-Objekts abgeglichen wird und die folgenden regulären Ausdrücke unterstützt:-
Ein Punkt (
.) stimmt mit einem beliebigen Zeichen überein. -
Ein Satz (
[...]) stimmt mit Zeichenbereichen überein. Beispielsweise stimmt[0-5]mit einer einzelnen Ziffer von 0 bis 5 überein , aber nicht mit 6 bis 9.[a-zA-Z]stimmt mit einem beliebigen Buchstaben überein, unabhängig von der Groß-/Kleinschreibung. Sätze unterstützen auch den Modifikator „nicht“^. -
Der Modifikator Sternchen (
*) stimmt mit dem vorangehenden Muster null oder mehr Mal überein. -
Der Modifikator Pluszeichen (
+) stimmt mit dem vorangehenden Muster ein oder mehr Mal überein. -
Der Modifikator Bereich (
{...}) gibt an, wie oft ein Muster übereinstimmen kann.
pathAdvancedPatternAbgleich ist eine Auswertungsimplementierung, bei der der Abgleich in Echtzeit mit dem Muster erfolgt und kein Backtracking unterstützt wird.Da
\als Escapezeichen verwendet wird, wenn der String aus XML gelesen wird, müssen Sie ihn doppelt maskieren, bevor er als Muster geparst wird. Ein wörtliches*wird beispielsweise als\\*und ein wörtliches\als\\\\geschrieben. Das entspricht dem, was Sie beim Erstellen des Strings im Java-Code schreiben.Weitere Informationen zu diesen fünf Mustertypen finden Sie in den Beschreibungen von
PATTERN_LITERAL,PATTERN_PREFIX,PATTERN_SIMPLE_GLOB,PATTERN_SUFFIXundPATTERN_ADVANCED_GLOBin der KlassePatternMatcher.Diese Attribute sind nur sinnvoll, wenn für den Filter auch die Attribute
schemeundhostangegeben sind.pathSuffixundpathAdvancedPatternwurden in API-Level 31 eingeführt. -
Ein Punkt (
android:fragmentandroid:fragmentPrefixandroid:fragmentSuffixandroid:fragmentPatternandroid:fragmentAdvancedPattern-
Ein Abgleich für ein URI-Fragment. Fügen Sie das Präfix
#nicht ein. Die Bedeutung von und die in den einzelnen Attributen zulässigen Muster finden Sie oben.Wenn Sie Zeichen abgleichen möchten, die normalerweise URI-codiert sind, fügen Sie die Rohform (nicht codiert) in den Attributwert ein. Beispielsweise stimmt
<data android:fragment="test!" />mit#test!und#test%21überein.Eingeführt in API-Level 35.
android:queryandroid:queryPrefixandroid:querySuffixandroid:queryPatternandroid:queryAdvancedPattern-
Ein Abgleich für einen URI-Abfrageparameter (und optional einen Wert). Sie können beispielsweise URIs die mit
?param=valueenden, mit<data android:query="param=value" />abgleichen. Fügen Sie das Präfix?nicht ein. Die Bedeutung von und die in den einzelnen Attributen zulässigen Muster finden Sie oben.Wenn Sie Zeichen abgleichen möchten, die normalerweise URI-codiert sind, fügen Sie die Rohform (nicht codiert) in den Attributwert ein. Beispielsweise stimmt
<data android:query="test!" />mit?test!und?test%21überein.Eingeführt in API-Level 35.
android:mimeType- Ein MIME-Medientyp wie
image/jpegoderaudio/mpeg4-generic. Der Untertyp kann das Sternchen (*) sein, um anzugeben, dass ein beliebiger Untertyp übereinstimmt.Häufig deklariert ein Intent-Filter ein
<data>Element, das nur dasandroid:mimeTypeAttribut enthält.Hinweis: Beim Abgleich von MIME-Typen im Android-Framework wird die Groß-/Kleinschreibung berücksichtigt, anders als bei formalen RFC-MIME-Typen. Geben Sie MIME-Typen daher immer in Kleinbuchstaben an.
- Eingeführt in:
- API-Level 1
- Siehe auch:
<action><category>
<Daten>
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2026-04-21 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2026-04-21 (UTC)."],[],[]]