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.
Made with Slides.com