隐式Intent的每个部分的匹配条件
一、操作
如果Intent过滤器没有定义操作,则该Intent过滤器克匹配所有传入的Intent操作;
如果Intent过滤器中指定了一个或者多个操作,则至少一个操作必须与传入的Intent操作匹配。
二、数据
如果Intent过滤器中没有指定数据特征,它将不会匹配包含任何数据或数据特性的传入的Intent。
注意:缺少数据和缺少操作的情况是相反的。
如果没有操作,匹配所有操作。如果没有数据,不匹配任何数据。
三、数据类型
Intent中的数据类型必须存在于Intent过滤器中。
传入的Intent的数据类型通过两种方式确定:
第一种是:如果数据URI时一个内容或文件URI,ContentProvider或Android将确定类型;
第二种是:查看Intent的显式数据类型。
数据类型区分大小写。
四、数据模式
传入的数据模式必须存在于Intent过滤器中。
所有组件都应该支持两种URI类型:“content:”和“file:”。
数据模式区分大小写。
五、数据授权
如果过滤器中没有授权,则可以匹配任何传入的数据URI的授权;
如果在过滤器中指定了授权,那么一种模式和一种授权应该与传入Intent的数据URI相匹配。
数据授权区分大小写。
六、数据路径
如果Intent过滤器中没有数据路径,则可以匹配任何传入数据URI的路径。
如果在过滤器中指定了路径,那么一种模式、一种授权、一个数据路径应该与传入Intent的数据URI相匹配。
路径区分大小写。
七、Intent类别
传入的Intent中的每个类别都必须存在于过滤器类别列表中。
如果过滤器没有任何类别,它只会与没有提及任何类别的Intent匹配。