为了通知系统它们可以处理哪些意图,活动、服务和广播接收器可以有一个或多个意图过滤器。
每个过滤器描述组件的一个能力,一系列组件想要接收的意图。它实际上按照一个期望的类型来进行意图滤入,同时滤出不想要的意图-但是只有不想要的隐式意图会被滤出(那些没有命名目标的对象类)。
一个显式意图总能够被递交给它的目标,而无论它包含什么。这种情况下过滤器不起作用。
但是一个显式意图仅当它能通过组件的一个过滤器时才可以被递交到这个组件。
组件为它能做的每项工作,每个呈现给用户的不同方面分有不同的过滤器。
比如,范例记事本应用程序中的主要活动有三个过滤器-一个是空白板,另一个是用户可以查看、编辑、或选择的一个指定的记事目录,第三是在没有初始目录说明的情况下查找一个特定的记录。
一个意图过滤器是IntentFilter 类的一个实例。
但是,由于Android 系统在启动一个组件前必须知道这个组件的能力,意图过滤器通常不会用Java 代码来设置,而是在应用程序清单文件(AndroidManifest.xml)中设置元素。
(有一个例外,通过调用Context.registerReceiver() 来注册的广播接收器的过滤器;它们是作为意图过滤器对象而被直接创建的。