Android IntentFilter了解

555 阅读2分钟

一些内容摘自: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:存放邮件内容。