Android中IntentFilter匹配规则的示例分析
这篇文章将为大家详细讲解有关Android中IntentFilter匹配规则的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
公司主营业务:成都网站建设、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出海拉尔免费做网站回馈大家。
IntentFilter的匹配规则
IntentFilter的使用
假如我们要隐式启动一个Activity我们需要成功匹配activity中的任意一个intent-filter。如果要成功匹配该intent-filter我们需要完全匹配该intent-filter中的 action、category、data。
示例:
如果activity的过滤列表如上配置,我们在设置intent的参数时需要同时满足action、category、data才算匹配成功,只有完全匹配才能成功启动activity。(如果是BroadcastReceiver的话,只需要满足action或data类型任意一个即可)。
action的匹配规则
action是一个字符串,系统预定义了一些action,同时我们也可以自己定义自己的action。action的匹配规则是Intent中的action必须能够和过滤规则中的action匹配(字符串值完全一样,区分大小写)。一个过滤规则中可以有多个action,那么只要intent中的action能够和过滤规则中的任何一个action相同即可匹配成功。另外如果过滤规则中定义了action,那么intent中也必须要有可匹配的action。
category的匹配规则
category的匹配规则是Intent中如果含有category,那么所有的category都必须和过滤规则中的其中一个category相同。换句话说intent中如果出现了category,都必须和过滤规则中的一个category相同。如果没有category的话,这个intent仍然可以匹配成功(这点和action不同)。至于为什么不设置category也能匹配?原因在于系统在调用startActivity或startActivityForResult的时候会默认加上Android.intent.category.DEFAULT。同时为了我们能够接受隐式调用,我们在AndroidManifest.xml中的intent-filter也要指定”android.intent.category.DEFAULT”这个category。
data的匹配规则
data的匹配规则与action类似,如果过滤规则中定义了data,那么Intent中必须也要定义可匹配的data。同时只要intent中的action能和过滤规则中的任何一个action相同即可匹配成功
data的语法
data由两部分组成,mimeType和URL。mimeType指媒体类型,比如image/jpeg、audio/mpeg4-generic和video/*等。而URL中包含的数据就比较多了,下面是URL的结构:
:// : /[ | | ]
例如:
content://com.blueberry.text:200/folder/subfolder/etc 或 http://www.baidu.com:80/search/info
另外需要注意如果在androidManifest.xml中的配置列表中没有设置URL只设置了mimeType例如:
URL实际上是有默认值的URL的默认值为content和File。也就是说如果androidManifest.xml中设置的跟上文一样。我们需要这样才能匹配:
inent.setDataAndType(Uri.parse(file://abc),"text/plain") 或 intent.setDataAndType(Uri.parse(content://abc),"text/plain")
总结
综上所述,如果要隐式启动一个activity。
1. 在androidManifest中查看activity的匹配列表。选择一个intent-filter进行匹配。如果定义有action或data,那我们的intent中也必须要包含可以与它匹配的action或data。
2. 创建intent设置action或者data。category可以设置也可以不设置(如果设置要全部都能匹配)。
3. 保证设置的action、data、category都能正确匹配。
4. 调用启动activity的方法:startActivity或startActivityForResult。
关于“Android中IntentFilter匹配规则的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
网页标题:Android中IntentFilter匹配规则的示例分析
文章来源:http://hbruida.cn/article/jgeipo.html