一些内容摘自:blog.csdn.net/weihan1314/…
今天复习了一下IntentFilter的一些基本属性,在此记录一下,方便之后查看
说IntentFilter之前,先说一下Activity的两种调用方式:
1、显示调用
2、隐士调用
一般地、只要定义上述的一种就可以,如果两个都调用了,显示的优先级会比较高。
这里主要说一下隐式调用,隐式调用的话,就需要了解IntentFilter里面的一些属性,主要包括三个:action、category、data。除了这三个,还有一个extras属性。
1)、action:表示一个动作。显示调用中的所有action都要满足隐式里面的定义。可以不设置,默认使用DEFAULT。例如:
ACTION_MAIN:Android Application的人口。每一个application只且只能有一个该定义,表示应用的入口activity
ACTION_ANSWER:接听来电
ACTION_CALL:直接呼叫data总所带的电话号码
ACTION_PACKAGE_ADDED:Android系统安装了新的Application之后发出带有此Action的广播(Broadcast)
ACTION_VIEW:用于显示用户的数据。比较通用,会根据用户的数据类型打开相应的Activity。比如 tel:13400010001打开拨号程序,http://www.g.cn则会打开浏览器等。
ACTION_SEND:由用户指定发送方式进行数据发送操作,比如微信分享,就是使用的该action,如下是一段图片分享的示例:
public void shareImage() {
ComponentName comp = new ComponentName("目标app包名", "目标app类名");
Intent sendIntent = new Intent();
sendIntent.setComponent(comp);
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("image/*");
sendIntent.putExtra(Intent.EXTRA_STREAM, "图片的uri");
startActivity(sendIntent);
}2)、category:指定当前动作(action)被执行的环境。显示调用中的所有categroy都要满足隐式里面的定义。可以不设置,默认使用ACTION_DEFAULT。
CATEGORY_DEFAULT:Android系统中默认的执行方式,按照普通Activity的执行方式执行。
CATEGORY_HOME:设置该组件为Home Activity。
CATEGORY_PREFERENCE:设置该组件为Preference。
CATEGORY_LAUNCHER:设置该组件为在当前应用程序启动器中优先级最高的Activity,通常为入口ACTION_MAIN配合使用。
CATEGORY_BROWSABLE:设置该组件可以使用浏览器启动。
CATEGORY_GADGET:设置该组件可以内嵌到另外的Activity中。
3)、data:要求接收的Intent中的data必须符合intent-filter中指定的data属性,这样达到反向限定Intent的作用。比如调用手机相册、通讯录等。显示调用中的所有data都要满足隐式里面的定义。可以不设置。
content://:内容数据格式,后跟需要读取的内容。
file://:文件数据格式,后跟文件路径。
market://search?q=pname:pkgname:市场数据格式,在Google Market里搜索包名为pkgname的应用。
4)、extras
EXTRA_BCC:存放邮件密送人地址的字符串数组。
EXTRA_CC:存放邮件抄送人地址的字符串数组。
EXTRA_EMAIL:存放邮件地址的字符串数组。
EXTRA_SUBJECT:存放邮件主题字符串。
EXTRA_TEXT:存放邮件内容。