[Android开发基础4] 意图与意图过滤器

文章目录

 意图(Intent)

简介

显式意图

隐式意图

意图过滤器(IntentFiler)

action

 data

category


 意图(Intent)

简介

        Intent被称为意图,是程序中各组件进行交互的一种重要方式,他不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。一般用于启动Activity、Service以及发送广播等。根据开启目标组件的方式不同,Intent被分为两种类型显式意图和隐式意图

显式意图

不带其它参数,只包含两个参数,当前页面与目标页面,不设置action,意图明显。

 示例代码:

//注册按钮的事件响应
        bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent();
                intent.setClass(loginActivity.this,RegisterActivity.class);
                startActivity(intent);
                Toast.makeText(loginActivity.this, "跳转注册页面成功", Toast.LENGTH_LONG).show();
            }
        });

隐式意图

 通过设置actioin在清单文件中扫描匹配对应的action,匹配成功则跳转执行,意图不明显。


意图过滤器(IntentFilter)

        当发送一个隐式意图后,Android系统会将他与程序中的每一个组件的过滤器进行匹配,匹配属性有 action、data、category,需要这三个属性都匹配成功才能唤起相应的组件,启动对应的activity。

action

用于指定Intent对象的动作

<intent-filter>
    <action android:name="android.intent.action.EDIT"/>
    <action android:name="android.intent.action.VIEW"/>
    ......
</intent-filter>

注意:

  • 只要Intent携带的action与其中一个<intent-filter>标签中action的声明相同,则属性匹配成功。

  • 在清单文件中为Activity添加<intent-filter>标签时,必须添加action属性,否则隐式Intent无法开启该Activity。

 data

指定数据的URI或者数据MIME类型他的值通常与Intent的action属性有关联。

<intent-filter>
<data android:mimeType="video/mpeg" android:scheme="http..."/>
    <data android:mimeType="audio/mpeg" android:scheme="http..."/>
    ...
</intent-filter>

注意:

  • 隐式Intent携带的data数据只要与IntentFilter中的任意一个data声明相同,data属性就匹配成功

category

用于为action添加额外信息。

<intent-filter>
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    .......
</intent-filter>

 注意:

  • 一个IntentFilter可以不声明category属性,也可以声明多个category属性。

  • 隐式Intent中声明的category必须全部能够与某一个IntentFilter中的category匹配才算匹配成功

  • IntentFilter中罗列的category属性数量必须大于或者等于隐式Intent携带的category属性数量时,category属性才能匹配成功。如果一个隐式Intent没有设置category属性,那么他可以通过任何一个IntentFilter(过滤器)的category匹配。

 

END.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aricl.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值