以Activity为例,Android的Activity的InterFilter一共有三种:action、category、data。我们用Intent隐式启动时需要根据Activity的这三种标签进行匹配。Service与BroadcastReceiver同理。

匹配规则

一.action

action的匹配规则分为两种情况:
1.没有data标签,或者说只有action和category标签时,action要求Intent的action必须存在且和中的其中一个action相同。
2.有data标签时,Intent只需要指定data标签(startActivity或startActivityForResult时系统默认加上android.intent.category.DEFAULT标签,相当于有category和data两种标签)即可,无需指定action,当然指定也没问题。

二.category

1.需要隐式启动的Activity必须在中加上android.intent.category.DEFAULT标签;
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才能匹配。

更多相关文章

  1. Android(安卓)4.0以后正确的获取外部sd卡存储目录
  2. android实现手机截屏并保存截图功能
  3. Android(安卓)文件存放路径
  4. 修改android 开机动画
  5. Unity 游戏框架搭建 (十二) 简易AssetBundle打包工具(二)
  6. Android读取本地或者网络图片的方法
  7. Android(安卓)Intent 匹配规则简析
  8. CCSprite在Android平台下显示SDCard中的图片
  9. Android(安卓)Studio 那些事| ' ' cannot be applied to '(groovy

随机推荐

  1. android修改重力感应方向
  2. Android——列表选择框(Spinner)
  3. Android Camera porting(HAL层移植)
  4. android蓝牙遥控车
  5. Android(安卓)2D图像显示
  6. (1)ActivityThread分析
  7. Android(安卓)OpenGL ES 开发教程(7):创建
  8. android:快速搜索手机中文件
  9. Google 暑期大学生博客分享大赛 2011 And
  10. 有关android内存泄露的问题以及解决方案