<dati>

sintassi:
Se il tag dati è figlio diretto di 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" />

Se il tag dati è figlio diretto di 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" />
contenuto in:
<intent-filter>
<uri-relative-filter-group>
description:
Aggiunge una specifica dei dati a un filtro per intent. La specifica è un tipo di dati, che utilizza l'attributo mimeType, un URI o sia un tipo di dati che un URI. Un URI è specificato da attributi separati per ciascuna delle sue parti:

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

Questi attributi che specificano il formato URI sono facoltativi, ma anche interdipendenti:

  • Se un scheme non è specificato per il filtro per intent, tutti gli altri attributi URI vengono ignorati.
  • Se non viene specificato un host per il filtro, l'attributo port e tutti gli attributi di percorso vengono ignorati.

Tutti gli elementi <data> contenuti nello stesso elemento <intent-filter> contribuiscono allo stesso filtro. Ad esempio, la seguente specifica del filtro:

<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>

è equivalente a questo:

<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>

Puoi inserire un numero qualsiasi di elementi <data> all'interno di un <intent-filter> per assegnargli più opzioni di dati. Nessuno dei suoi attributi ha valori predefiniti.

Per informazioni su come funzionano i filtri per intent, incluse le regole per la corrispondenza degli oggetti intent con i filtri, consulta Intent e filtri per intent e la sezione Filtri per intent nella panoramica del file manifest.

attributi:
android:scheme
La parte dello schema di un URI. Questo è l'attributo essenziale minimo per specificare un URI. Per il filtro deve essere impostato almeno un attributo scheme, altrimenti nessuno degli altri attributi URI è significativo.

Uno schema viene specificato senza i due punti finali, ad esempio http anziché http:.

Se il filtro ha un tipo di dati impostato (utilizzando l'attributo mimeType) ma nessuno schema, vengono presupposti gli schemi content: e file:.

Nota: la corrispondenza degli schemi nel framework Android è sensibile alle maiuscole e minuscole, a differenza della RFC. Di conseguenza, specifica sempre gli schemi utilizzando lettere minuscole.

android:host
La parte host di un'autorità URI. Questo attributo non ha significato a meno che non venga specificato anche un attributo scheme per il filtro. Per trovare la corrispondenza di più sottodomini, utilizza un asterisco (*) per trovare la corrispondenza di zero o più caratteri nell'host. Ad esempio, l'host *.google.com corrisponde a www.google.com, .google.com e developer.google.com.

L'asterisco deve essere il primo carattere dell'attributo host. Ad esempio, l'host google.co.* non è valido perché il carattere jolly asterisco non è il primo carattere.

Nota: la corrispondenza del nome host nel framework Android è sensibile alle maiuscole e minuscole, a differenza della RFC formale. Di conseguenza, specifica sempre i nomi host utilizzando lettere minuscole.

android:port
La parte della porta di un'autorità URI. Questo attributo è significativo solo se per il filtro vengono specificati anche gli attributi scheme e host.
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
La parte del percorso di un URI, che deve iniziare con /. L'attributo path specifica un percorso completo che viene confrontato con il percorso completo di un oggetto Intent. L'attributo pathPrefix specifica un percorso parziale che viene confrontato solo con la parte iniziale del percorso nell'oggetto Intent.

L'attributo pathSuffix corrisponde esattamente alla parte finale del percorso nell'oggetto Intent e non deve iniziare con il carattere /.

L'attributo pathPattern specifica un percorso completo che viene confrontato con il percorso completo nell'oggetto Intent, ma può contenere i seguenti caratteri jolly:

  • Un punto (.) corrisponde a qualsiasi carattere.
  • Un asterisco (*) corrisponde a una sequenza da zero a molte occorrenze del carattere immediatamente precedente.
  • Un punto seguito da un asterisco (.*) corrisponde a qualsiasi sequenza di da zero a molti caratteri.

L'attributo pathAdvancedPattern specifica un percorso completo, che viene confrontato con il percorso completo dell'oggetto Intent e supporta i seguenti pattern simili alle espressioni regolari:

  • Un punto (.) corrisponde a qualsiasi carattere.
  • Un insieme ([...]) corrisponde a intervalli di caratteri. Ad esempio, [0-5] corrisponde a una singola cifra da 0 a 5, ma non da 6 a 9. [a-zA-Z] corrisponde a qualsiasi lettera, indipendentemente dalle maiuscole. I set supportano anche il modificatore "not" ^.
  • Il modificatore asterisco (*) corrisponde al pattern precedente zero o più volte.
  • Il modificatore più (+) corrisponde al pattern precedente una o più volte.
  • Il modificatore di intervallo ({...}) specifica il numero di volte in cui un pattern può corrispondere.
Il matcher pathAdvancedPattern è un'implementazione di valutazione in cui la corrispondenza viene eseguita in tempo reale rispetto al pattern senza supporto del backtracking.

Poiché \ viene utilizzato come carattere di escape quando la stringa viene letta da XML, prima che venga analizzata come pattern, devi eseguire il doppio escape. Ad esempio, un valore letterale * viene scritto come \\* e un valore letterale \ viene scritto come \\\\. È simile a ciò che scrivi quando costruisci la stringa nel codice Java.

Per saperne di più su questi cinque tipi di pattern, consulta le descrizioni di PATTERN_LITERAL, PATTERN_PREFIX, PATTERN_SIMPLE_GLOB, PATTERN_SUFFIX e PATTERN_ADVANCED_GLOB nella classe PatternMatcher.

Questi attributi sono significativi solo se per il filtro vengono specificati anche gli attributi scheme e host.

pathSuffix e pathAdvancedPattern sono stati introdotti nel livello API 31.

android:fragment
android:fragmentPrefix
android:fragmentSuffix
android:fragmentPattern
android:fragmentAdvancedPattern

Un matcher per un frammento di URI. Non includere il prefisso #. Vedi sopra il significato e i pattern consentiti in ogni attributo.

Per trovare corrispondenze con i caratteri che di solito sono codificati come URI, includi la forma non codificata nel valore dell'attributo. Ad esempio, <data android:fragment="test!" /> corrisponde a #test! e #test%21.

Introdotto nel livello API 35.

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

Un matcher per un parametro di query URI (e, facoltativamente, un valore). Ad esempio, puoi abbinare gli URI che terminano con ?param=value a <data android:query="param=value" />. Non includere il prefisso ?. Vedi sopra il significato e i pattern consentiti in ogni attributo.

Per trovare corrispondenze con i caratteri codificati in URI, includi la forma non codificata nel valore dell'attributo. Ad esempio, <data android:query="test!" /> corrisponde a ?test! e ?test%21.

Introdotto nel livello API 35.

android:mimeType
Un tipo di media MIME, ad esempio image/jpeg o audio/mpeg4-generic. Il sottotipo può essere il carattere jolly asterisco (*) per indicare che qualsiasi sottotipo corrisponde.

È comune che un filtro per intent dichiari un elemento <data> che include solo l'attributo android:mimeType.

Nota: la corrispondenza dei tipi MIME nel framework Android è sensibile alle maiuscole e minuscole, a differenza dei tipi MIME RFC formali. Di conseguenza, specifica sempre i tipi MIME utilizzando lettere minuscole.

introdotto in:
Livello API 1
Vedi anche:
<action>
<category>