1

これらの一連のインテント フィルタの違いは何ですか?

<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/カテゴリ 2 で、アクション 1/カテゴリ 2 またはアクション 2/カテゴリ 1 ではありません)。2 つ目は、指定されたアクションとカテゴリの任意の組み合わせで機能します。

あれは正しいですか?

4

1 に答える 1

3

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

指定された値のいずれかが Intent アクションと一致する場合、アクションは一致します。フィルターがアクションを指定しない場合、アクションを含まないインテントのみに一致します。

Intent のすべてのカテゴリがフィルターで指定されたカテゴリに一致する場合、カテゴリは一致します。Intent に含まれていないフィルター内の余分なカテゴリによって、一致が失敗することはありません。アクションとは異なり、カテゴリのない IntentFilter は、カテゴリを持たない Intent にのみ一致することに注意してください。

したがって、最初のバージョンは次のインテントに一致します。

  • 行動=行動1
  • act=アクション1 猫=[カテゴリー1]
  • 行動=行動2
  • act=アクション2 猫=[カテゴリー2]

そして2番目はこれらに適合します:

  • 行動=行動1
  • act=アクション1 猫=[カテゴリー1]
  • act=アクション1 猫=[カテゴリー2]
  • act=action1 cat=[カテゴリー1,カテゴリー2]
  • 行動=行動2
  • act=アクション2 猫=[カテゴリー1]
  • act=アクション2 猫=[カテゴリー2]
  • act=action2 cat=[カテゴリ1,カテゴリ2]

ご覧のとおり、インテントにはさらに多くのカテゴリを含めることができますが、アクションは 1 つしか持つことができません。

于 2013-10-09T10:17:57.077 に答える