这两组意图过滤器有什么区别?
<intent-filter>
<action android:name="action1">
<category android:name="category1">
</intent-filter>
<intent-filter>
<action android:name="action2">
<category android:name="category2">
</intent-filter>
和
<intent-filter>
<action android:name="action1">
<category android:name="category1">
<action android:name="action2">
<category android:name="category2">
</intent-filter>
我认为只有在意图操作/类别匹配一对对中的一个(即action1 / category1和action2 / category2而不是action1 / category2或action2 / category1)时,第一个才有效。第二种将与提供的动作和类别的任何组合一起使用。
那是对的吗?
最佳答案
http://developer.android.com/reference/android/content/IntentFilter.html
如果任何给定值与Intent操作匹配,则Action匹配;如果
过滤器未指定任何操作,则只会匹配
不包含动作。
如果意图中的所有类别均匹配,则类别匹配
过滤器中给出的类别。过滤器中的其他类别
不在意图中不会导致匹配失败。注意
与操作不同,没有类别的IntentFilter仅会匹配
没有任何类别的Intent。
因此,第一个版本将符合以下意图:
行动=行动1
act = action1 cat = [category1]
行动=行动2
act = action2 cat = [category2]
第二个适合这些:
行动=行动1
act = action1 cat = [category1]
act = action1 cat = [category2]
act = action1 cat = [category1,category2]
行动=行动2
act = action2 cat = [category1]
act = action2 cat = [category2]
act = action2 cat = [category1,category2]
如您所见,在一个Intent中可能有更多类别,但是您只能有一个动作。