全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android 中IntentFilter的匹配规则实例详解

IntentFilter的匹配规则

IntentFilter的使用

假如我们要隐式启动一个Activity我们需要成功匹配activity中的任意一个intent-filter。如果要成功匹配该intent-filter我们需要完全匹配该intent-filter中的 action、category、data。

示例:

<activity android:name=".MainActivity">
  <intent-filter>
   <action android:name="com.blueberry.action"></action>
   <action android:name="com.blueberry.action1"></action>

   <category android:name="com.blueberry.category"></category>
   <category android:name="android.intent.category.DEFAULT"></category>

   <data android:mimeType="text/plain"></data>
   </intent-filter>
</activity>

如果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
  android:host="string"
  android:path="/string"
  android:pathPattern="*"
  android:port="12"
  android:scheme="string"
  android:mimeType="text/plain"
  ></data>

data由两部分组成,mimeType和URL。mimeType指媒体类型,比如image/jpeg、audio/mpeg4-generic和video/*等。而URL中包含的数据就比较多了,下面是URL的结构:

<schema>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern>]

例如:

content://com.blueberry.text:200/folder/subfolder/etc 或 http://www.baidu.com:80/search/info

另外需要注意如果在androidManifest.xml中的配置列表中没有设置URL只设置了mimeType例如:

<intent-filter>
  <action android:name="com.blueberry.second"></action>
  <category android:name="android.intent.category.DEFAULT"></category>
  <data android:mimeType="text/plain"></data>
</intent-filter>

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  # IntentFilter匹配规则  # Android Intent与IntentFilter案例详解  # Android组件间通信--深入理解Intent与IntentFilter  # Android Intent-Filter匹配规则解析  # Android中的Intent Filter匹配规则简介  # Android IntentFilter的匹配规则示例详解  # 也要  # 都能  # 任何一个  # 中也  # 隐式  # 自己的  # 是一个  # 都必须  # 是有  # 多个  # 如有  # 要有  # 也能  # 希望能  # 如果没有  # 较多  # 只需要  # 其中一个  # 谢谢大家  # 才算 


相关文章: 建站之星图片链接生成指南:自助建站与智能设计教程  公司网站的制作公司,企业网站制作基本流程有哪些?  如何在宝塔面板中创建新站点?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  专业商城网站制作公司有哪些,pi商城官网是哪个?  c# 服务器GC和工作站GC的区别和设置  教程网站设计制作软件,怎么创建自己的一个网站?  制作企业网站建设方案,怎样建设一个公司网站?  建站之星备案是否影响网站上线时间?  做企业网站制作流程,企业网站制作基本流程有哪些?  网站微信制作软件,如何制作微信链接?  建站之星如何保障用户数据免受黑客入侵?  如何获取上海专业网站定制建站电话?  如何用VPS主机快速搭建个人网站?  如何规划企业建站流程的关键步骤?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  网站制作壁纸教程视频,电脑壁纸网站?  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  建站主机无法访问?如何排查域名与服务器问题  网站制作报价单模板图片,小松挖机官方网站报价?  建站之星免费版是否永久可用?  已有域名如何快速搭建专属网站?  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何在腾讯云免费申请建站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何在新浪SAE免费搭建个人博客?  建站主机选虚拟主机还是云服务器更好?  已有域名和空间如何搭建网站?  宁波自助建站系统如何快速打造专业企业网站?  ,制作一个手机app网站要多少钱?  如何安全更换建站之星模板并保留数据?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何高效完成独享虚拟主机建站?  如何在Windows服务器上快速搭建网站?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  宝塔建站无法访问?如何排查配置与端口问题?  中山网站推广排名,中山信息港登录入口?  建站主机是否属于云主机类型?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  文字头像制作网站推荐软件,醒图能自动配文字吗?  建站之星多图banner生成与模板自定义指南  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  建站主机是否等同于虚拟主机?  实例解析angularjs的filter过滤器  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  上海网站制作开发公司,上海买房比较好的网站有哪些?  大连网站设计制作招聘信息,大连投诉网站有哪些?  网站制作模板下载什么软件,ppt模板免费下载网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。