activity的启动方式有两种:显示启动和隐式启动。显示启动很简单,也很常用。隐式启动则需要Intent能够匹配目标activity 在 IntentFilter配置的过滤信息。

Intent和IntentFilter中的过滤信息有Action、Category、Data

action

  • action是一个字符串,系统预设了一些action规则,也可以定义自己的action。
  • 一个IntentFilter可以预设多个Action,但只要Intent中的action能够与任意一个预设的action相同,则匹配成功。
  • Action区分大小写

category

  • category是一个字符串,系统预设了一些category,可以自定义。
  • category有系统默认值。可以不设置,如果在IntentFilter自定义了的category规则,则必须加上系统默认的规则。
  • 和action的Intent匹配规则不同的是,category中的规则是必须过滤的,所以IntentFilter中预设了几个category,则Intent中就必须匹配几个category,否则匹配不成功。

data

  • 如果设置了data过滤规则,则Intent中也必须有可匹配的data
  • data由mimeTypeURI组成。
    – mimeType包括:image/jpeg、audio/mpeg4-generic、vidio/*等,可以表示图片、文本、视频等不同的媒体格式
    –URI格式:<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern>]
    data语法格式:
<data android:scheme="string"android:host="string"android:port="string"android:path="string"android:pathPattern="string"android:pathPrefix="string"android:mimeType="string" />
启动包含action过滤规则的activity
<intent-filter><action android:name="test.zzy.com" /><action android:name="action_main2" /><action android:name="action_main3" />
</intent-filter>

Intent构建:

                Intent intent = new Intent();intent.setAction("test.zzy.com");//Intent中的action只要有一个和intent-filter中的action相同就匹配成功
//                intent.setAction("action_main2");//也可以不注释
//                intent.setAction("action_main3");//也可以不注释startActivity(intent);

默认category可以不用单独匹配。

启动包含category的Activity
            <intent-filter><action android:name="test.zzy.com" /><action android:name="action_main2" /><action android:name="action_main3" /><category android:name="cate_main1" /><category android:name="cate_main2" /><category android:name="cate_main3" /><category android:name="android.intent.category.DEFAULT" /></intent-filter>

Intent构建:

                Intent intent = new Intent();intent.setAction("test.zzy.com");//Intent中的category必须和intent-filter中的category完全匹配,// 即intent-filter中有多少category,Intent中也必须有多少categoryintent.addCategory("cate_main1");//必须添加intent.addCategory("cate_main2");//必须添加intent.addCategory("cate_main3");//必须添加startActivity(intent);
启动包含data的Activity
             <intent-filter><action android:name="test.zzy.com" /><category android:name="cate_main1" /><category android:name="cate_main2" /><category android:name="cate_main3" /><category android:name="android.intent.category.DEFAULT" /><dataandroid:host="www.app.com"android:mimeType="text/plain"android:scheme="http" /></intent-filter>

Intent构建

                Intent intent = new Intent();intent.setAction("test.zzy.com");intent.addCategory("cate_main1");//必须添加intent.addCategory("cate_main2");//必须添加intent.addCategory("cate_main3");//必须添加intent.setDataAndType(Uri.parse("http://www.app.com"),"text/plain");startActivity(intent);

也可以不设置URI

            <intent-filter><action android:name="test.zzy.com" /><category android:name="cate_main1" /><category android:name="android.intent.category.DEFAULT" /><dataandroid:mimeType="text/plain"/></intent-filter>

Intent构建

                Intent intent = new Intent();intent.setAction("test.zzy.com");intent.addCategory("cate_main1");intent.setDataAndType(Uri.parse("file://string"),"text/plain");startActivity(intent);
  • 当过滤规则中没有指定URI时,默认值为content和file。

现在总算是明白了些IntentFilter的匹配规则了。?

参考:https://www.aliyun.com/jiaocheng/13965.html

intentfilter匹配规则相关推荐

  1. Android IntentFilter的匹配规则

    IntentFilter的匹配规则 IntentFilter的匹配规则 IntentFilter的匹配规则 一.Intent简介 二.IntentFilter匹配规则 1.action的匹配规则 2. ...

  2. Java中intentfiler_【Android - 组件】之IntentFilter的匹配规则

    我们知道,Activity的启动模式分为两种,分别是显式启动和隐式启动.显式启动需要明确的指定被启动的对象的组件信息,包括包名和类名:而隐式启动需要 Intent 能够匹配目标组件的 IntentFi ...

  3. android intent-filter作用,Android中Intent-Filter的匹配规则是什么

    Android中Intent-Filter的匹配规则是什么 发布时间:2020-12-14 15:19:32 来源:亿速云 阅读:67 作者:Leah 今天就跟大家聊聊有关Android中Intent ...

  4. Intent 匹配规则

    1.在AndroidManifest.xml中可以为 每个 Activity,Service 设置多个Intent-Filter; 在系统启动和程序安装之后,android会收集AndroidMani ...

  5. Android值Intent匹配规则挖掘(PMS获取系统apk信息过程)

    Intent的查找与匹配 App信息表的构建 在Android开发中,Intent是极其重要的一个类,他是个个组件,进程之间通信的纽带,那么系统是如何通过Intent来查找对应的组件的呢? 在Andr ...

  6. Intent的匹配规则

    intent是android中作为启动四大组件的粘合剂,中文意思是意图.intent是某种将要执行的操作的抽象描述,它可以通过startActivity(Intent) 启动activity,send ...

  7. MQTT topic匹配规则

    MQTT topic匹配规则 原文连接: https://blog.csdn.net/JiangCheng817/article/details/81333893 内容: 主题层级分隔符 " ...

  8. Nginx—核心配置location匹配规则说明

    2019独角兽企业重金招聘Python工程师标准>>> location介绍 location指令是Nginx中最核心的一项配置,根据预先定义的URL匹配规则来接收用户发送的请求,根 ...

  9. nginx的优先匹配规则

    nginx的优先匹配规则 以=开头表示精确匹配 如 A 中只匹配根目录结尾的请求,后面不能带任何字符串. ^~ 开头表示uri以某个常规字符串开头,不是正则匹配 ~ 开头表示区分大小写的正则匹配; ~ ...

最新文章

  1. 程序员必知的20个Python技巧
  2. 攻破JAVA NIO技术壁垒
  3. 你应该知道的 volatile 关键字
  4. 【Tensorflow】io 操作
  5. SAP UI5 CRM Reuse Fiori应用 note.js代码审查结果
  6. 用python画爱心再加一行文字_如何理解python一行代码实现一个爱心字符画?
  7. mysql查找大小写_mysql查询不区分大小写
  8. [BZOJ]2820: YY的GCD
  9. Recipe terminated with error. vscode latex-workshop新的配置文件
  10. matlab 动画_MATLAB的动画制作和视频录制
  11. 点云数据格式及处理工具
  12. 电能计量方案在智能插座产品上的应用之“我见”
  13. 极光推送测试/新手适用/极光推送点击事件设置
  14. 基于多智能体强化学习的自动化集装箱码头无冲突AGV路径规划
  15. 关于左连接查询出现排序问题
  16. 多任务学习 Pytorch实现
  17. 哈密顿插值c语言,哈密顿系统有限元方法的长时间性质研讨——冯康猜想的证明.pdf...
  18. 观《哪吒之魔童降世》有感
  19. 电脑计算机显示调用失败和未执行,远程调用过程失败且未执行的详细处理方法...
  20. aden -接球游戏3.0

热门文章

  1. 对标阿里P5—P8Java社招岗的面试题解析
  2. 基于Cloudflare搭建属于自己的GitHub加速站,github下载无忧
  3. jQuery插件之form
  4. 【支付】uniapp之app中的支付宝、微信支付的实现及orderInfo的说明
  5. JQuery插件使用小结
  6. 读书笔记-别说你懂写网文
  7. CodeForces 1300C Anu Has a Function
  8. ftp客户端软件,8款最受欢迎的ftp客户端软件
  9. 【竞赛篇-杭创】杭州市大学生创业大赛参赛经验
  10. 【JAVA】跨机房压测性能问题分析