2013-10-08 34 views
1

這些意向過濾器集之間有什麼區別?正確使用<intent-filter>

<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> 

我認爲,如果意圖動作/類別相匹配的對之一(即動作1 /類別1和動作2 /產品組別,但沒有動作1 /產品組別或動作2 /第一個只會工作類別1)。第二個將與所提供的&類別的任何組合一起使用。

這是正確的嗎?

+0

我會嘗試一個示例應用程序來弄清楚。 – prijupaul

回答

3

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

行動,如果任何給定值的符合目的的行動相匹配;如果 篩選器沒有指定任何操作,則它只會匹配 不包含操作的Intents。

如果Intent中的所有類別都與過濾器中給出的 類別匹配,則類別匹配。 不在Intent中的額外類別不會導致匹配失敗。請注意, 與動作不同,沒有類別的IntentFilter只會匹配 Intent,它沒有任何類別。

所以第一個版本將匹配這些意圖:

  • 行爲=動作1
  • 行爲=動作1貓= [類別1]
  • 行爲= 1動作
  • 行爲= 1動作貓= [類別2]

而第二個將適合這些:

  • ACT =動作1
  • ACT =動作1貓= [類別1]
  • ACT =動作1貓= [類別2]
  • ACT =動作1貓= [類別1,類別2]
  • ACT = 1動作
  • ACT = 1動作貓= [類別1]
  • ACT = 1動作貓= [類別2]
  • ACT = 1動作貓= [類別1,類別2]

正如你所看到的,可以在一個意圖中有更多的類別,但是你只能有一個動作。