IntentFilter的匹配规则

来源:互联网 发布:2016年网络购物数据 编辑:程序博客网 时间:2024/04/27 22:00

启动Activity有两种方式,显示和隐式调用。

显示调用需要明确地指定调用对象的组件信息,包括包名和类名。

隐式调用需要匹配AndroidManifest文件中的IntentFilter规则,IntentFilter由action,category,data组成。

1)如果IntentFilter匹配规则中出现了action,那么就必须使用setAction方法设置intent的action。

2)对于category可以不用调用addCategory来设置category,但是如果一旦调用了addCategory就必须与IntentFilter中的某一个category匹配,否则会

报找不到组件(Activty)的错误。之所以不需要addCategory也能找到组件,是因为系统会默认为Intent加上“android.intent.category.DEFAULT”。因此为了

能够隐式调用成功,必须在manifest文件的IntentFilter匹规则中添加<category  android:name="android.intent.category.DEFAULT"/>,否则,即使调用了

addCategory,也无法找到组件

3)data的匹配规则和action类似,data是由URI和mimeType组成。需要注意的是如果没有在manifest文件中显示添加URI(例如<data android:scheme="http" android:host="www.baidu.com" />),需用会默认添加content或file。所以如果在IntentFilter的匹配规则中出现了data,即使没有URI,(例如 <data android:mimeType="text/plain"/>),那么在调用的地方也需要使用setDataAndType(Uri.parse("content://abc", "text/plain"))

0 0
原创粉丝点击