Category测试
为了指定能够接收并处理的Intent的类型,组件可以在intent-filter中声明其支持0个或多个category,例如:
<intent-filter> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> ... </intent-filter>
intent对象有addCategory()方法,也就是说一个intent对象也可以关联多个category。为了能让intent对象通过intent-filter的category测试,intent对象中的所有category都要在intent-filter中找到对应项。
具体来说,又分为如下两种情况:
-
intent对象至少有一个category
这种情况下,假设intent对象有N个category(N >=1),那么intent-filter中必须要包含这N个category,intent对象才能通过category测试,否则无法通过测试。如果用intent对象启动Activity,还有其他限制条件,会在后面详细说明。
举个例子,假设我们的intent-filter如下所示:<intent-filter> <action android:name="com.ispring.action.ACTION_TEST1" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="com.ispring.category.TEST1" /> <category android:name="com.ispring.category.TEST2" /> </intent-filter>
以下intent对象能够通过category测试
Intent intent = new Intent(); intent.setAction("com.ispring.action.ACTION_TEST1"); intent.addCategory("com.ispring.category.TEST1"); intent.addCategory("com.ispring.category.TEST2");该intent对象之所以可以通过category测试是因为intent-filter包含了该intent对中所有的category值:com.ispring.category.TEST1”和com.ispring.category.TEST2。










