Android(安卓)InterFilter的匹配规则
以Activity为例,Android的Activity的InterFilter一共有三种:action、category、data。我们用Intent隐式启动时需要根据Activity的这三种标签进行匹配。Service与BroadcastReceiver同理。
匹配规则
一.action
action的匹配规则分为两种情况:
1.没有data标签,或者说只有action和category标签时,action要求Intent的action必须存在且和
2.有data标签时,Intent只需要指定data标签(startActivity或startActivityForResult时系统默认加上android.intent.category.DEFAULT标签,相当于有category和data两种标签)即可,无需指定action,当然指定也没问题。
二.category
1.需要隐式启动的Activity必须在
2.Intent只加category标签启动Activity会报错,必须配合action或者data使用;
3.Intent若未添加category标签,startActivity或者startActivityForResult时会默认加上android.intent.category.DEFAULT标签。
4.Intent若含有category,则所有的category都必须与
三.data
1.Activity若含有data标签,则Intent必须要有与之匹配的data。
2.data的语法:
Scheme:URI的模式。
Host:URI主机名
Port:URI端口号
Path、pathPattern、pathPrefix:表述路径信息,path标识完整的路径信息;pathPattern也表示完整路径信息,但是它里面可以包含通配符"",""表示0个或多个任意字符;pathPrefix表示路径的前缀信息。
其中string代表字符串,如android:mimeType="image/*",data标签可以只有android:mimeType。如:
此时虽然没有指定URI,但是Intent中的URI默认是content或者file才能匹配。
更多相关文章
- Android(安卓)4.0以后正确的获取外部sd卡存储目录
- android实现手机截屏并保存截图功能
- Android(安卓)文件存放路径
- 修改android 开机动画
- Unity 游戏框架搭建 (十二) 简易AssetBundle打包工具(二)
- Android读取本地或者网络图片的方法
- Android(安卓)Intent 匹配规则简析
- CCSprite在Android平台下显示SDCard中的图片
- Android(安卓)Studio 那些事| ' ' cannot be applied to '(groovy