intentfilter匹配规则
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由
mimeType
和URI
组成。
– 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匹配规则相关推荐
- Android IntentFilter的匹配规则
IntentFilter的匹配规则 IntentFilter的匹配规则 IntentFilter的匹配规则 一.Intent简介 二.IntentFilter匹配规则 1.action的匹配规则 2. ...
- Java中intentfiler_【Android - 组件】之IntentFilter的匹配规则
我们知道,Activity的启动模式分为两种,分别是显式启动和隐式启动.显式启动需要明确的指定被启动的对象的组件信息,包括包名和类名:而隐式启动需要 Intent 能够匹配目标组件的 IntentFi ...
- android intent-filter作用,Android中Intent-Filter的匹配规则是什么
Android中Intent-Filter的匹配规则是什么 发布时间:2020-12-14 15:19:32 来源:亿速云 阅读:67 作者:Leah 今天就跟大家聊聊有关Android中Intent ...
- Intent 匹配规则
1.在AndroidManifest.xml中可以为 每个 Activity,Service 设置多个Intent-Filter; 在系统启动和程序安装之后,android会收集AndroidMani ...
- Android值Intent匹配规则挖掘(PMS获取系统apk信息过程)
Intent的查找与匹配 App信息表的构建 在Android开发中,Intent是极其重要的一个类,他是个个组件,进程之间通信的纽带,那么系统是如何通过Intent来查找对应的组件的呢? 在Andr ...
- Intent的匹配规则
intent是android中作为启动四大组件的粘合剂,中文意思是意图.intent是某种将要执行的操作的抽象描述,它可以通过startActivity(Intent) 启动activity,send ...
- MQTT topic匹配规则
MQTT topic匹配规则 原文连接: https://blog.csdn.net/JiangCheng817/article/details/81333893 内容: 主题层级分隔符 " ...
- Nginx—核心配置location匹配规则说明
2019独角兽企业重金招聘Python工程师标准>>> location介绍 location指令是Nginx中最核心的一项配置,根据预先定义的URL匹配规则来接收用户发送的请求,根 ...
- nginx的优先匹配规则
nginx的优先匹配规则 以=开头表示精确匹配 如 A 中只匹配根目录结尾的请求,后面不能带任何字符串. ^~ 开头表示uri以某个常规字符串开头,不是正则匹配 ~ 开头表示区分大小写的正则匹配; ~ ...
最新文章
- 程序员必知的20个Python技巧
- 攻破JAVA NIO技术壁垒
- 你应该知道的 volatile 关键字
- 【Tensorflow】io 操作
- SAP UI5 CRM Reuse Fiori应用 note.js代码审查结果
- 用python画爱心再加一行文字_如何理解python一行代码实现一个爱心字符画?
- mysql查找大小写_mysql查询不区分大小写
- [BZOJ]2820: YY的GCD
- Recipe terminated with error. vscode latex-workshop新的配置文件
- matlab 动画_MATLAB的动画制作和视频录制
- 点云数据格式及处理工具
- 电能计量方案在智能插座产品上的应用之“我见”
- 极光推送测试/新手适用/极光推送点击事件设置
- 基于多智能体强化学习的自动化集装箱码头无冲突AGV路径规划
- 关于左连接查询出现排序问题
- 多任务学习 Pytorch实现
- 哈密顿插值c语言,哈密顿系统有限元方法的长时间性质研讨——冯康猜想的证明.pdf...
- 观《哪吒之魔童降世》有感
- 电脑计算机显示调用失败和未执行,远程调用过程失败且未执行的详细处理方法...
- aden -接球游戏3.0