Android——显示Intent和隐式Intent以及IntentFilter匹配规则
一:显示Intent
我相信显示Intent大家已经使用的非常熟练了,此处不再过多阐述。
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this,FirstActivity.class); startActivity(intent); } });
我们先讲IntentFilter匹配规则然后在讲隐式Intent,会比较容易理解。
二:IntentFilter匹配规则
IntentFilter中的过滤信息包括action,category,data
如有要匹配过滤列表,就要同时匹配过滤列表中的action,category,data信息,否则匹配失败。一个Activity可以存在多组IntentFilter,只要Intent匹配其中一组即可,一组IntentFilter也可以存在多个action,category,data
1.action匹配规则
action是一个字符串,系统有预定义的,我们也可以自己定义。
匹配规则:一组IntentFilter可以有多个action,只要Intent中的action与IntentFilter中的任一一个action匹配成功,则成功,匹配成功是指字符串相同。字符串区分大小写,如果Intent没有指定action也会匹配失败
2.category匹配规则
category是一个字符串,系统有预定义的,我们也可以自己定义。
Intent可以不指定category也会匹配成功,因为系统会在调用startActivity的时候默认为Intent加上android.intent.category.DEFAULT
,但如果Intent指定了category就必须和IntentFilter中的category匹配,否则匹配失败
3.data匹配规则
data的构成由mimeType和URI组成。
mimeType指媒体类型,比如图片,视频,音频等
URI结构如下:
://:/[ | | ]
scheme:URI的模式,比如http,file等,如果没有指定scheme,则URI的参数无效,也就是URI无效。
host:URI的主机名,如果没有指定host,则URI的参数无效,也就是URI无效。
port:端口号,只有scheme和host存在且合理,Port才有意义
path:完整路径
pathPrefix:路径的前缀信息
pathPattern:完整路径,可含通配符
匹配规则:
Intent必须指定data,而且必须与IntentFilter中的任意一个data匹配成功,才有意义。
如果我们单独指定了mimeType,不知道URI也能匹配成功,因为URI的默认值为content和file
三:隐式Intent
隐式Intent需要明确指点组件信息。隐式Intent需要匹配IntentFilter中设置的过滤信息
我们首先在清单文件中自定义action和categroy(记住可以自定义没意义的action和categroy,只要和Intent匹配就可以)
然后我们在ManActivity中隐式Intent
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent("com.example.implicit.Activity"); intent.addCategory("com.example.implicit.FirstActivity"); startActivity(intent); } });
预定义Action和Category属性值
Action和category的值可以自定义,Android系统也提供了许多预定义的常量值,用于启动系统预定义的Activity、Service。
下面我们介绍一些预定义的指
Action常量 对应的字符串 说明ACTION_MIAN android.intent.action.MAIN 应用程序入口 ACTION_VIEW android.intent.action.VIEW 显示指定数据ACTION_EDIT android.intent.action.EDIT 编辑指定数据ACTION_DIAL android.intent.action.DIAL 显示拨号面板ACTION_CALL android.intent.action.CALL 向指定用户打电话ACTION_SEND android.intent.action.SEND 向其他人发送数据ACTION_SENDTO android.intent.action.MESSAGE 向其他人发送消息ACTION_ANSWER android.intent.action.ANSWER 应答电话ACTION_INSERT android.intent.action.INSERT 插入数据ACTION_DELETE android.intent.action.DELETE 删除数据ACTION_RUN android.intent.action.RUN 运行数据ACTION_SYNC android.intent.action.SYNC 用户数据同步ACTION_PICK_ACTIVITY android.intent.action.PICK_ACTIVITY 选择ActivityACTION_SEARCH android.intent.action.SEARCH 执行搜索ACTION_WEB_SEARCH android.intent.action.WEB_SEARCH 执行Web搜索Intent类中与Category相关的常量值列表Category 常量对应的字符串 说明CATEGORY_DEFAULT android.intent.category.DEFAULT 默认的CategoryCATEGORY_TAB android.intent.category.TAB指定Activity 作为TabActivity的Tab页CATEGORY_LAUNCHER android.intent.category.LAUNCHERActivity 显示在顶级程序列表中CATEGORY_INFO android.intent.category.INFO 用于提供包信息CATEGORY_HOMEandroid.intent.category.HOME设置该Activity随系统启动而运行CATEGORY_PREFERENCE android.intent.category.PREFERENCE 设置Activity是参数面板
更多相关文章
- 如何解决Android的SDK与ADT不匹配问题
- android webservices sax 传输并解析xml
- android button属性
- Android(安卓)应用指定浏览器开发实例
- Android中RelativeLayout相关属性
- Android开发中XML布局的常用属性说明
- Android下 布局加边框 指定背景色 半透明
- Maven Android(安卓)Plugin
- Android(安卓)Studio 4.0 新功能之 AndroidKotlin Live Template