Android's documentation says:
http://developer.android.com/reference/android/content/IntentFilter.html
"Action matches if any of the given values match the Intent action, or if no actions were specified in the filter."
I just tried to test it. In my test application I set such filter for one of activities:
<intent-filter>
<action android:name="ma" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="mk1" />
</intent-filter>
I try to send such intent:
Intent i = new Intent();
i.setAction("ma");
i.addCategory("mk1");
startActivity(i);
It works - my activity gets started.
Then I comment out action in filter:
<intent-filter>
<!-- <action android:name="ma" /> -->
<category android:name="android.intent.category.DEFAULT" />
<category android:name="mk1" />
</intent-filter>
Again I send the very same intent. Now my activity doesn't start.
Why? According to documentation, when my filter has no actions specified, intent with some actions should fullfill it.