Creo que es bien documentado here. Resumiendo, cuando (por ejemplo) transfiere un intento a Context.startActivity o Context.startService, o lo transmite con Context.sendBroadcast, etc., ¿qué actividad o servicio (o qué conjunto de receptores de difusión) se entrega?
Respuesta: si la intención es "explícita", es decir, tiene el campo del nombre del componente establecido, se envía al componente de destino que designa, esto normalmente ocurre en la comunicación dentro de una aplicación.
De lo contrario (intención "implícita", como es típico para la comunicación entre las aplicaciones), Android debe determinar la mejor actividad o servicio (o conjunto de receptores) por sí mismo. ¿Cómo lo hace Android? Ahí es donde entran en filtros, y cito:
Lo hace mediante la comparación de los contenidos del objeto Intención de intención filtros, estructuras asociadas con componentes que potencialmente puede recibir intenciones. Los filtros anuncian las capacidades de un componente y delimitan las intenciones que puede manejar. Abren el componente a la posibilidad de recibir implícitos intents del tipo anunciado. Si un componente no tiene ningún filtro , solo puede recibir intentos explícitos de . Un componente con filtros puede recibir intentos explícitos e implícitos de .
La página web en cuestión continúa con muchos detalles y, al final, un ejemplo completo y simple, y creo que sería redundante copiarlos y pegarlos aquí.
Creo que no es un problema cuando uno no puede resolver algo debido a un malentendido –
aquí hay una publicación al respecto http://android-pro.blogspot.com/search/label/Intent%20Filters –