正确使用<intent-filter> </intent-filter>

时间:2013-10-08 23:11:07

标签: android android-intent android-manifest

这些意图过滤器组之间有什么区别?

<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)。第二种方法适用于任何动作和组合的组合。提供的类别。

这是对的吗?

1 个答案:

答案 0 :(得分:3)

http://developer.android.com/reference/android/content/IntentFilter.html

  

如果任何给定值与Intent操作匹配,则操作匹配;如果   过滤器指定没有动作,那么它只会匹配Intents   不包含任何动作。

     

如果Intent中的所有类别都匹配,则匹配   过滤器中给出的类别。过滤器中的额外类别   不在Intent中不会导致匹配失败。注意   与动作不同,没有类别的IntentFilter只会匹配   一个没有任何类别的意图。

所以第一个版本会匹配这些意图:

  • 行为=动作1
  • act = action1 cat = [category1]
  • 行为= 1动作
  • act = action2 cat = [category2]

第二个适合这些:

  • 行为=动作1
  • act = action1 cat = [category1]
  • act = action1 cat = [category2]
  • act = action1 cat = [category1,category2]
  • 行为= 1动作
  • act = action2 cat = [category1]
  • act = action2 cat = [category2]
  • act = action2 cat = [category1,category2]

正如您所看到的,可以在Intent中包含更多类别,但您只能执行一个操作。