<dati>

:
<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 o sia un tipo di dati sia 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 reciprocamente dipendenti:

  • Se scheme non viene specificato per il filtro per intent, tutti gli altri attributi URI vengono ignorati.
  • Se host non viene specificato 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. Ad esempio, la seguente specifica di filtro:

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

è equivalente a questo:

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

Puoi posizionare un numero illimitato di elementi <data> all'interno di un elemento <intent-filter> per avere più opzioni per i dati. Nessun attributo presenta valori predefiniti.

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

:
android:scheme
La parte dello schema di un URI. Questo è l'attributo essenziale minimo per specificare un URI. Deve essere impostato almeno un attributo scheme per il filtro oppure 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 set di tipi di dati (con l'attributo mimeType) ma non uno schema, vengono utilizzati gli schemi content: e file:.

Nota: la corrispondenza dello schema nel framework Android è sensibile alle maiuscole, a differenza dell'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 la corrispondenza di più sottodomini, utilizza un asterisco (*) per trovare una corrispondenza con 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, a differenza dell'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 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 di corrispondenza con il percorso completo in un oggetto Intent. L'attributo pathPrefix specifica un percorso parziale che viene abbinato solo alla parte iniziale del percorso nell'oggetto Intent.

L'attributo pathSuffix viene abbinato esattamente alla parte finale del percorso nell'oggetto Intent e questo attributo non deve iniziare con il carattere /. L'attributo pathPattern specifica un percorso completo di cui viene trovata una corrispondenza con il percorso completo dell'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 di tipo regex:

  • Un punto (.) corrisponde a qualsiasi carattere.
  • Un insieme ([...]) corrisponde a intervalli di caratteri. Ad esempio , [0-5] trova una sola cifra da 0 a 5 ma non da 6 a 9. [a-zA-Z] trova qualsiasi lettera, indipendentemente dalle lettere maiuscole e minuscole. 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 di backtracking.

Poiché \ viene utilizzato come carattere di escape quando la stringa viene letta da XML, prima di essere analizzata come pattern, devi eseguire l'escape doppio. Ad esempio, un valore letterale * si scrive come \\*, mentre un \ letterale viene scritto come \\\. È simile a ciò che 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 gli attributi scheme e host sono specificati anche per il filtro.

pathSuffix e pathAdvancePattern sono stati introdotti 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.

È comune 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
consulta anche:
<action>
<category>