隐式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,则也会匹配
