- Syntaxe :
- Si la balise de données est l'enfant immédiat d'un
<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" />
Si la balise de données est l'enfant immédiat d'un<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" />
- Contenu dans :
-
<intent-filter>
<uri-relative-filter-group>
- Description :
- Ajoute une spécification de données à un filtre d'intent. La spécification est un type de données utilisant l'attribut
mimeType
, un URI ou les deux. Un URI est spécifié par des attributs distincts pour chacune de ses sections :<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]
Les attributs suivants, qui précisent le format de l'URI, sont facultatifs, mais dépendent également les uns des autres :
- Si aucun élément
scheme
n'est spécifié pour le filtre d'intent, tous les autres attributs d'URI sont ignorés. - Si aucun élément
host
n'est spécifié pour le filtre, l'attributport
et tous les attributs de chemin sont ignorés.
Tous les éléments
<data>
qui se trouvent dans le même élément<intent-filter>
contribuent au même filtre. Par exemple, la spécification de filtre suivante :<intent-filter . . . > <data android:scheme="something" android:host="project.example.com" /> ... </intent-filter>
équivaut à celui-ci :
<intent-filter . . . > <data android:scheme="something" /> <data android:host="project.example.com" /> ... </intent-filter>
Vous pouvez placer autant d'éléments
<data>
que vous le souhaitez dans un élément<intent-filter>
pour lui donner plusieurs options de données. Aucun de ses attributs n'a de valeurs par défaut.Pour en savoir plus sur le fonctionnement des filtres d'intent, y compris les règles de mise en correspondance des objets d'intent, consultez Intents et filtres d'intent et la section Filtres d'intent dans la présentation du fichier manifeste.
- Si aucun élément
- Attributs :
android:scheme
- Partie "schéma" d'un URI. Il s'agit de l'attribut minimal requis pour spécifier un URI. Au moins un attribut
scheme
doit être défini pour le filtre. Sinon, aucun des autres attributs d'URI n'est pertinent.Un schéma est spécifié sans les deux-points à la fin (par exemple,
http
au lieu dehttp:
).Si le filtre comporte un type de données défini (à l'aide de l'attribut
mimeType
), mais pas de schéma, les schémascontent:
etfile:
sont utilisés.Remarque : Contrairement au document RFC, la correspondance de schéma dans le framework Android est sensible à la casse. Par conséquent, vous devez toujours spécifier les schémas en minuscules.
android:host
- Partie "hôte" d'une autorité d'URI. Cet attribut n'a aucun sens, sauf si un attribut
scheme
est également spécifié pour le filtre. Pour établir une correspondance avec plusieurs sous-domaines, utilisez un astérisque (*
) afin de faire correspondre zéro caractère ou plus à l'hôte. Par exemple, l'hôte*.google.com
correspond àwww.google.com
,.google.com
etdeveloper.google.com
.L'astérisque doit être le premier caractère de l'attribut d'hôte. Par exemple, l'hôte
google.co.*
n'est pas valide, car le caractère générique (astérisque) ne correspond pas au premier caractère.Remarque : Contrairement au document RFC formel, la correspondance des noms d'hôte dans le framework Android est sensible à la casse. Par conséquent, vous devez toujours spécifier les noms d'hôte en minuscules.
android:port
- Partie "port" d'une autorité d'URI. Cet attribut n'est pertinent que si les attributs
scheme
ethost
sont également spécifiés pour le filtre. android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
- Partie "chemin" d'un URI, qui doit commencer par
/
. L'attributpath
spécifie un chemin d'accès complet mis en correspondance avec le chemin d'accès complet dans un objetIntent
. L'attributpathPrefix
spécifie un chemin partiel mis en correspondance uniquement avec la partie initiale du chemin dans l'objetIntent
.L'attribut
pathSuffix
est mis en correspondance exactement avec la partie finale du chemin dans l'objetIntent
. Il ne doit pas nécessairement commencer par le caractère/
. L'attributpathPattern
spécifie un chemin d'accès complet, qui est mis en correspondance avec le chemin d'accès complet dans l'objetIntent
et accepte les caractères génériques suivants :- Un astérisque (
*
) correspond à une séquence de zéro à plusieurs occurrences du caractère qui précède immédiatement. - Un point suivi d'un astérisque (
.*
) représente une séquence de zéro à plusieurs caractères.
L'attribut
pathAdvancedPattern
spécifie un chemin d'accès complet, qui est mis en correspondance avec le chemin d'accès complet de l'objetIntent
, et qui accepte les formats suivants de type "expression régulière" :-
Un point (
.
) correspond à n'importe quel caractère. -
Un ensemble (
[...]
) correspond à des plages de caractères. Par exemple,[0-5]
correspond à un seul chiffre compris entre 0 à 5, mais pas entre 6 et 9. De même,[a-zA-Z]
peut renvoyer n'importe quelle lettre, quelle que soit la casse. Les ensembles acceptent également le modificateur^
. -
L'astérisque (
*
) correspond au format précédent zéro ou plusieurs fois. -
Le modificateur Plus (
+
) correspond au format précédent une ou plusieurs fois. -
Le modificateur de plage (
{...}
) indique le nombre de correspondances possibles d'un format.
pathAdvancedPattern
est une implémentation d'évaluation dans laquelle la mise en correspondance est effectuée par rapport au modèle en temps réel sans prise en charge du suivi en arrière-plan.Étant donné que la barre oblique inverse (
\
) est utilisée en tant que caractère d'échappement lorsque la chaîne est lue à partir d'un fichier XML, vous devez utiliser deux échappements avant qu'elle ne soit analysée en tant que modèle. Par exemple, une valeur littérale*
s'écrit\\*
, et une valeur littérale\
s'écrit\\\
. Cela revient à utiliser la même syntaxe que pour construire la chaîne dans le langage de programmation Java.Pour en savoir plus sur ces types de schémas, consultez les descriptions de
PATTERN_LITERAL
,PATTERN_PREFIX
,PATTERN_SIMPLE_GLOB
,PATTERN_SUFFIX
etPATTERN_ADVANCED_GLOB
dans la classePatternMatcher
.Ces attributs ne sont pertinents que si les attributs
scheme
ethost
sont également spécifiés pour le filtre.pathSuffix
etpathAdvancedPattern
ont été introduits dans le niveau d'API 31. - Un astérisque (
android:fragment
android:fragmentPrefix
android:fragmentSuffix
android:fragmentPattern
android:fragmentAdvancedPattern
-
Correspondance pour un fragment d'URI. N'incluez pas le préfixe
#
. Consultez la section ci-dessus pour connaître la signification et les formats autorisés dans chaque attribut.Pour faire correspondre les caractères qui sont généralement encodés en URI, incluez la forme brute (non codée) dans la valeur de l'attribut. Par exemple,
<data android:fragment="test!" />
correspond à#test!
et#test%21
.Introduit au niveau d'API 35.
android:query
android:queryPrefix
android:querySuffix
android:queryPattern
android:queryAdvancedPattern
-
Correspondance pour un paramètre de requête URI (et éventuellement une valeur). Par exemple, vous pouvez faire correspondre les URI se terminant par
?param=value
avec<data android:query="param=value" />
. N'incluez pas le préfixe?
. Consultez la section ci-dessus pour connaître la signification et les formats autorisés pour chaque attribut.Pour faire correspondre des caractères qui sont généralement encodés en URI, incluez la forme brute (non codée) dans la valeur de l'attribut. Par exemple,
<data android:query="test!" />
correspond à?test!
et?test%21
.Introduit au niveau d'API 35.
android:mimeType
- Type de média MIME, comme
image/jpeg
ouaudio/mpeg4-generic
. Le caractère générique astérisque (*
) indique que tout sous-type correspond.Il est courant qu'un filtre d'intent déclare un élément
<data>
n'incluant que l'attributandroid:mimeType
.Remarque : Dans le framework Android, la correspondance des types MIME est sensible à la casse, contrairement aux types MIME du document RFC formel. Par conséquent, vous devez toujours spécifier les types MIME en minuscules.
- Première apparition :
- Niveau d'API 1
- Voir aussi :
<action>
<category>
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/12/21 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2024/12/21 (UTC)."],[],[]]