一个过滤器和Intent对象有同样的动作、数据以及类别字段,一个隐式Intent在过滤器的所有3个方面都被测试。为了递交到拥有这个过滤器的组件,过滤器必须通过动作、数据以及类别这3项测试。即使只有一个不通过,Android系统也不会把它递交给这个组件。
1)ACTION
<intent-filter>
<action android:name="com.example.project.1"/>
<action android:name="com.example.project.2"/>
</intent-filter>
在上述代码中,一个Intent对象只对单个动作命名,而一个过滤器可能会列举多个。列举不能为空;一个过滤器必须包含至少一个动作元素,否则将会阻塞所有的意图。为了通过上述的测试,在Intent对象中指定的动作必须匹配过滤器中所列举的动作之一。如果过滤器或者Inteng对象不指定一个动作,那么意图测试就会失败。
2)CATEGORY
<intent-filter>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
对于一个通过类别测试的Intent,每个Intent对象中的类别必须匹配一个过滤器中的类别。这个过滤器可以列举另外的类别,但是不能遗漏任何在这个Intent中的类别。所以,原则上一个没有类别的Intent对象应该总能通过测试,无论过滤器中有什么。
3)DATA
上同。。。