<données>

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'attribut port 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.

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 de http:).

Si le filtre comporte un type de données défini (à l'aide de l'attribut mimeType), mais pas de schéma, les schémas content: et file: 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 et developer.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 et host 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'attribut path spécifie un chemin d'accès complet mis en correspondance avec le chemin d'accès complet dans un objet Intent. L'attribut pathPrefix spécifie un chemin partiel mis en correspondance uniquement avec la partie initiale du chemin dans l'objet Intent.

L'attribut pathSuffix est mis en correspondance exactement avec la partie finale du chemin dans l'objet Intent. Il ne doit pas nécessairement commencer par le caractère /. L'attribut pathPattern spécifie un chemin d'accès complet, qui est mis en correspondance avec le chemin d'accès complet dans l'objet Intent 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'objet Intent, 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.
L'outil de mise en correspondance 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 et PATTERN_ADVANCED_GLOB dans la classe PatternMatcher.

Ces attributs ne sont pertinents que si les attributs scheme et host sont également spécifiés pour le filtre.

pathSuffix et pathAdvancedPattern ont été introduits dans le niveau d'API 31.

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 ou audio/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'attribut android: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>