intent/intentFilter

本文深入讲解 Android 中 Intent 的工作机制及使用方法,包括显示与隐式启动的区别、Intent 的属性设置和解析机制等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Intent和intentFilter:

android用intent机制来协助应用间的交互与通讯。intent负责对应用中一次操作的动作、动作

    涉及的数据、附加数据进行描述。起到一个交互中介的作用,

intent的使用方式

1、通过context.startActivity()和Activity.startActivityForResule()启动activity

2、通过context.startService启动服务,或context.bindService与后台服务交互

3、通过广播context.sendBroadcast发送给broadcast receivers

intent的属性设置

1、Action:使用在响应组件(activity等)中android:name来制定对响应的动作名,

   动作名必须是唯一的,intent可以设置action属性来制定动作

      intent.setAction("在这里添加上面制定的动作名");

2、Data:执行动作要操作的数据,android中采用指向数据的URI来表示。

3、type 数据类型,显示制定数据的数据类型。

4、category:类别: 被执行动作的附加信息。

5、component组件: android会根据intent包含的action等信息查找,但如果有component

     就会按照comonent,其他的都会忽略。

6\extras 附加信息,是其他所有附加信息的集合,如发送邮件,将标题,正文添加到里面,发送给邮件组,

intent的两种用法:

 1、显示启动

    Intent it = new Intent(activity,activity);

   startActivity(it);

  指明了接收者,

2、隐式启动

   Intent it = new Intent();

   it.setAction("tiansong");

   startActivity(it);

对于显示intent,android不用去解析,因为目标组件已经明确,隐式intent需要

通过解析,将intent映射给可以处理此intent的activity\service等

  intent 解析机制主要是通过查找AndroidManifest中所有的intentFilter中定义的Intent,

最终找到匹配的Intent,解析是通过action,type,category三个属性来进行判断的,

intent里面放数据:

  intent it= new Intent();

Bundle b = new Bundle();

b.putString(“name”,” this.s”);

it.putExtras(b);

获取: Bundle b = it.getExtras();

     String s = b.getString("name");

IntentFilter定义:

  IntentFilter就是用于描述intent的各种属性,eg:action category

IntentFilter的几个注意事项:

  1、android.intent.action.MAIN决定一个应用程序最先启动组件。

    android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里(在桌面

                显示一个图标)

隐式intent:

  每一个通过startActivity方法发出的隐式intent都至少有一个category,就是”android.

   intent.categroy.DEFAULT"所以只要想接收一个隐式intent的Activity 

    

intent-Filter 的优先级:在intent的过滤顺序:action->data->category

android.intent.category.LAUNCHER决定程序在桌面有图标与

android.intent.category.HOME 决定应用程序在HOME键下能显示在HOME列表中,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值