<dati>

sintassi:
<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" />
contenuto in:
<intent-filter>
description:
Aggiunge una specifica dei dati a un filtro per intent. La specifica è un tipo di dati che utilizza l'attributo mimeType, un URI oppure sia un tipo di dati sia un URI. Un URI è specificato da attributi separati per ognuna delle sue parti:

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

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

  • Se non viene specificato un scheme 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 del percorso vengono ignorati.

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

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

equivale a questo:

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

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

Per informazioni sul funzionamento dei filtri per intent, incluse le regole per la corrispondenza degli oggetti di intent con i filtri, consulta Filtri di intent e per intent e la sezione Filtri di intent nella panoramica del file manifest.

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

Viene specificato uno schema senza i due punti finali, ad esempio http anziché http:.

Se il filtro ha un set di tipi di dati (con l'attributo mimeType) ma non ha uno schema, vengono assunti gli schemi content: e file:.

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

android:host
La parte host di un'autorità URI. Questo attributo è privo di significato, a meno che non venga specificato anche un attributo scheme per il filtro. Per trovare una corrispondenza tra più sottodomini, utilizza un asterisco (*) per corrispondere a 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 di Android è sensibile alle maiuscole, a differenza della RFC formale. Di conseguenza, specifica sempre i nomi host usando lettere minuscole.

android:port
La parte della porta di un'autorità URI. Questo attributo ha senso solo se gli attributi scheme e host sono specificati anche per il filtro.
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 in 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 questo attributo non deve necessariamente 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 asterisco (*) corrisponde a una sequenza da zero a molte occorrenze del carattere immediatamente precedente.
  • Un punto seguito da un asterisco (.*) corrisponde a qualsiasi sequenza 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 a regex:

  • 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] trova qualsiasi lettera, indipendentemente dall'uso delle maiuscole/minuscole. I set supportano anche il modificatore "non" ^.
  • Il tasto di modifica asterisco (*) corrisponde al pattern precedente zero o più volte.
  • Il modificatore più (+) corrisponde una o più volte al pattern precedente.
  • 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 base al pattern in tempo reale senza supporto per il backtracking.

Poiché \ viene utilizzato come carattere di escape quando la stringa viene letta da XML, prima di essere analizzata come pattern, devi eseguire il doppio escape. Ad esempio, il valore letterale * viene scritto come \\* e un \ letterale viene scritto come \\\. È un po' come scrivi quando crei la stringa nel codice Java.

Per ulteriori informazioni 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 scheme e host sono specificati anche per il filtro.

pathSuffix e pathAdvancedPattern sono state introdotte nel livello API 31.

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

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

Nota: la corrispondenza del tipo MIME nel framework Android è sensibile alle maiuscole, 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>