隐式Intent匹配规则
action:
intent
中指定的action只要与intent-filter
中其中一个action
匹配即可
如果intent
未指定任何action
,intent-filter
可以被匹配到(前提是,intent-filter
至少指定了一项 action
)
如果 intent-filter
未指定任何action
,则不会被匹配到
举个栗子
可以的
Intent intent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.EDIT" /> // 把下面两个注释掉也是可以的
<action android:name="android.intent.action.VIEW" />
</intent-filter>
可以的
Intent intent = new Intent(); // Intent未指定Aaction
// sendIntent.setAction(Intent.ACTION_SEND);
<intent-filter>
<action android:name="android.intent.action.SEND" /> // 指定了至少一个action
</intent-filter>
不可以的
Intent intent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
<intent-filter>
// 未指定action
</intent-filter>
不可以的
Intent intent = new Intent(); // intent未指定action
// sendIntent.setAction(Intent.ACTION_SEND);
<intent-filter>
// 未指定action
</intent-filter>
category:
Intent
中的每个category
均必须与过滤器中的类别匹配,如果Intent
中未指定category
,则也会匹配