Intent Filters

Filtros de intención

  • Si la activity NO tiene filtros, sólo se puede ejecutar mediante intents explícitos.
  • Sólo se tiene en cuenta DATA, ACTION y CATEGORY
  • Se definen en el androidManifest.xml

ACTION & CATEGORY

  • Para especificarlas en nuestro código usamos constantes al estilo: ACTION_DIAL, ACTION_EDIT, CATEGORY_BROWSABLE
  • En el manifest se hace de forma diferente.
  • Necesitamos definir la ruta entera.
  • Category: android.intent.category.BROWSABLE
  • Action: android.intent.action.DIAL

Resolución del filtro

  • Se comprueba el filtro siempre que se ejecuta un intent implícito.
  • Se deben cumplir las condiciones especificadas.

<action> ... </action>

  • Se pueden definir varias o ninguna.
  • Si es vacío se bloquean todos los filtros.
  • Si la action del filtro coincide con alguna de las de nuestro intent pasa el filtro.
  • Si el intent no tiene acciones también pasa el filtro.

<category> ... </category>

  • Se pueden definir varios o ninguna.
  • Para pasar el filtro TODAS las categorías del intent deben estar en el filtro, si no se bloquea el intent.
  • Un intent sin categorías siempre pasa el filtro.
    • Excepción: Cuando es llamado por el sistema, en ese caso el sistema lo trata como si tuviera al menos la categoría DEFAULT.

<data> ... </data>

  • Se pueden definir varias o ninguna.
  • Nos define un tipo de dato, mediante URI o tipo MIME.
  • Paso del filtro:
    • URI no definida & MIME type no definido en manifest: OK
    • URI definida & tipo no definido & solo definida URI en manifest: OK
    • URI no definida & tipo definido & solo definido tipo en manifest: OK
    • Definido Tipo y URI o sólo URI con tipo implícito (tipo file:// o content://) y definido de la misma forma en manifest: OK
    • Los demás casos el filtro se bloquea.

Intent Filters

By marcos_perez

Intent Filters

  • 638