清单文件中的意图过滤器元素里列举了动作元素,比如:<intent-filter . . . >
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
. . .
</intent-filter>
注意前面描述的动作和类别常量没有在清单文件中使用。相反使用了完整的字符串。
比如,对应于前述CATEGORY_BROWSABLE 常量,上面的例子里使用了"android.intent.category.BROWSABLE"字符串。
类似的,字符串"android.intent.action.EDIT" 对应于ACTION_EDIT 常量。
对一个通过类别测试的意图,每个意图对象中的类别必须匹配一个过滤器中的类别。
这个过滤器可以列举另外的类别,但它不能遗漏任何在这个意图中的类别。
因此,原则上一个没有类别的意图对象应该总能够通过测试,而不管过滤器里有什么。
绝大部分情况下这个是对的。但有一个例外,Android 把所有传给startActivity()的隐式意图当作他们包含至少一个类别:“android.intent.category.DEFAULT” (CATEGORY_DEFAULT 常量)。
因此,想要接收隐式意图的活动必须在它们的意图过滤器中包含"android.intent.category.DEFAULT"。
(带"android.intent.action.MAIN"和"android.intent.category.LAUNCHER"设置的过滤器是例外)。
它们标记那些启动新任务和呈现在启动屏幕的活动。
它们可以在类别列表中包含"android.intent.category.DEFAULT",但不是必要的。)
可查阅后面的使用意图匹配(Using intent matching)以获得更多关于过滤器的信息。