Android的文档说:
http://developer.android.com/reference/android/content/IntentFilter.html
“如果任何给定值与 Intent 操作匹配,或者在过滤器中未指定任何操作,则操作匹配。”
我只是尝试测试它。在我的测试应用程序中,我为其中一项活动设置了这样的过滤器:
<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>
我再次发送相同的意图。现在我的活动没有开始。
为什么?根据文档,当我的过滤器没有指定操作时,带有某些操作的意图应该会填充它。