<datos>

sintaxis:
<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 incluye en:
<intent-filter>
descripción:
Agrega una especificación de datos a un filtro de intents. La especificación es un tipo de datos que usa el atributo mimeType, un URI o ambos. Un URI se especifica por medio de atributos separados para cada una de sus partes:

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

Estos atributos que especifican el formato de URI son opcionales, pero también interdependientes:

  • Si no se especifica un scheme para el filtro de intents, se ignoran todos los otros atributos de URI.
  • Si no se especifica un host para el filtro, se ignora el atributo port y todos los atributos de ruta de acceso.

Todos los elementos <data> dentro del mismo elemento <intent-filter> contribuyen al mismo filtro. Por ejemplo, la siguiente especificación de filtro:

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

equivale a la siguiente:

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

Puedes colocar todos los elementos <data> que quieras dentro de un <intent-filter> para proporcionarle varias opciones de datos. Ninguno de sus atributos tiene valores predeterminados.

Para obtener información sobre el funcionamiento de los filtros de intents, incluidas las reglas sobre cómo se comparan los objetos de intents con los filtros, consulta Intents y filtros de intents y la sección Filtros de intents en la descripción general del archivo de manifiesto.

atributos:
android:scheme
Es la porción de esquema de un URI. Se trata del atributo mínimo esencial para especificar un URI. Se debe configurar al menos un atributo scheme para el filtro; de lo contrario, ningún otro atributo del URI será significativo.

El esquema se especifica sin los dos puntos finales; por ejemplo, se usa http en lugar de http:.

Si el filtro tiene un conjunto de tipos de datos (que usa el atributo mimeType), pero no tiene un esquema, se usan los esquemas content: y file:.

Nota: La verificación de coincidencia de esquemas en el framework de Android distingue entre mayúsculas y minúsculas, a diferencia del RFC. Por lo tanto, siempre debes especificar esquemas con letras minúsculas.

android:host
Es la parte del host de una autoridad de URI. Este atributo no es significativo, a menos que también se especifique un atributo scheme para el filtro. Para establecer coincidencias con varios subdominios, usa un asterisco (*) que represente entre cero y varios caracteres del host. Por ejemplo, el host *.google.com coincide con www.google.com, .google.com y developer.google.com.

El asterisco debe ser el primer carácter del atributo de host. Por ejemplo, el host google.co.* no es válido, ya que el comodín de asterisco no es el primer carácter.

Nota: La verificación de coincidencia del nombre de host en el framework de Android distingue entre mayúsculas y minúsculas, a diferencia del RFC formal. Por lo tanto, siempre debes especificar los nombres de host con letras minúsculas.

android:port
Es la parte del puerto de una autoridad de URI. Este atributo es significativo solamente si también se especifican los atributos scheme y host para el filtro.
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
Es la parte de la ruta de acceso de un URI, que debe comenzar con /. El atributo path especifica una ruta de acceso completa que se compara con una ruta de acceso completa en un objeto Intent. El atributo pathPrefix especifica una ruta de acceso parcial que se compara solo con la parte inicial de la ruta de acceso del objeto de Intent.

El atributo pathSuffix se compara solamente con la parte final de la ruta de acceso del objeto Intent, y este atributo no tiene que comenzar con el carácter /. El atributo pathPattern especifica una ruta de acceso completa que se compara con la ruta de acceso completa del objeto Intent, pero puede contener los siguientes comodines:

  • Un asterisco (*) coincide con una secuencia de entre cero y muchas repeticiones del carácter inmediatamente anterior.
  • Un punto seguido de un asterisco (.*) coincide con cualquier secuencia de entre cero y muchos caracteres.

El atributo pathAdvancedPattern especifica una ruta de acceso completa, que se compara con la ruta completa del objeto Intent y admite los siguientes patrones similares a una regex:

  • Un punto (.) coincide con cualquier carácter.
  • Un conjunto ([...]) coincide con un rango de caracteres. Por ejemplo, [0-5] coincide con un solo dígito de 0 a 5, pero no de 6 a 9. [a-zA-Z] coincide con cualquier letra, sin importar el uso de mayúsculas o minúsculas. Los conjuntos también admiten el modificador ^ con el valor "no".
  • El modificador de asterisco (*) coincide con el patrón anterior cero o más veces.
  • El modificador de signo más (+) coincide con el patrón anterior una o más veces.
  • El modificador de rango ({...}) especifica la cantidad de veces que puede coincidir un patrón.
El comparador pathAdvancedPattern es una implementación de evaluación en la que la comparación se realiza con el patrón en tiempo real y no es compatible con la técnica de backtracking.

Debido a que \ se usa como un carácter de escape cuando la cadena se lee desde XML, antes de que se analice como un patrón, deberás usar dos caracteres de escape. Por ejemplo, un * literal se escribe como \\* y una \ literal se escribe como \\\. Esto es como lo que escribes cuando construyes la cadena en código Java.

Para obtener más información sobre estos cinco tipos de patrones, consulta las descripciones de PATTERN_LITERAL, PATTERN_PREFIX, PATTERN_SIMPLE_GLOB, PATTERN_SUFFIX y PATTERN_ADVANCED_GLOB en la clase PatternMatcher.

Estos atributos solo son significativos si también se especifican los atributos scheme y host para el filtro.

pathSuffix y pathAdvancePattern se incluyeron en el nivel de API 31.

android:mimeType
Es un tipo de medio MIME, como image/jpeg o audio/mpeg4-generic. El subtipo puede ser el comodín de asterisco (*) para indicar que cualquier subtipo coincide.

Es común que un filtro de intents declare un elemento <data> que incluya solamente el atributo android:mimeType.

Nota: La verificación de coincidencia con el tipo de MIME en el framework de Android distingue entre mayúsculas y minúsculas, a diferencia de los tipos de MIME de RFC formales. Por lo tanto, siempre debes especificar tipos de MIME con letras minúsculas.

primera inclusión:
Nivel de API 1
consulta también:
<action>
<category>