Android のドキュメントには次のように書かれています。
http://developer.android.com/reference/android/content/IntentFilter.html
「指定された値のいずれかが意図アクションと一致する場合、またはフィルターでアクションが指定されていない場合、アクションは一致します。」
私はそれをテストしようとしました。私のテスト アプリケーションでは、アクティビティの 1 つにそのようなフィルターを設定しました。
<intent-filter>
<action android:name="ma" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="mk1" />
</intent-filter>
私はそのような意図を送ろうとします:
Intent i = new Intent();
i.setAction("ma");
i.addCategory("mk1");
startActivity(i);
動作します - 私のアクティビティが開始されます。
次に、フィルターのアクションをコメントアウトします。
<intent-filter>
<!-- <action android:name="ma" /> -->
<category android:name="android.intent.category.DEFAULT" />
<category android:name="mk1" />
</intent-filter>
もう一度、まったく同じ意図を送信します。今、私の活動は始まりません。
なんで?ドキュメントによると、フィルターにアクションが指定されていない場合、いくつかのアクションの意図はそれを満たす必要があります。