显式Intent和隐式Intent

本文详细介绍了Android中Intent的概念,包括其组成部分及如何使用。讲解了显式Intent和隐式Intent的区别,以及如何通过Intent启动活动、服务和发送广播。特别强调了隐式Intent在不同程序间通讯的应用。

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

Intent简介

Intent 由动作、 效据, 分类, 类型、 组件和扩展信息等内容组成, 每个组成部分都由相应的国性进行表示,并提供设置和获取相应属性的方法,如下表

Intent可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。一般被用于启动活动、启动服务以及发送广播等

显式Intent

意图明显,用于启动明确的活动、服务等

//Intent(Context,目标class);
Intent intent = new Intent(BroadcastTest.this,BroadcastTest_1.class);
startActivity(intent);//启动活动
startService(intent);//启动服务

隐式Intent(启动当前程序内的活动)

意图模糊,不指定具体目标活动,通过指定一系列抽象的action和category信息,交由系统决定目标响应活动

使用说明:需要在当前活动的Intent和目标活动的<intent-filter>标签中配置对应action和category。当action和category都相互匹配时,目标活动才会响应。

action只能指定一个,category可以指定多个

>当前活动

//Intent intent = new Intent("action字符串")
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");//指定category标签
intent.addCategory("android.intent.category.DEFAULT")//默认category,这里可以不用添加
startActivity(intent);//用于启动目标活动

>目标响应活动<intent-filter>

<activity
    android:name=".No2_Activity">
    <intent-filter>
        <action android:name="com.example.activitytest.ACTION_START" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="com.example.activitytest.MY_CATEGORY" />                        
    </intent-filter>
</activity>

隐式Intent(启动其他程序内的活动)

通过指定一系列action常量,这些常量对应一系列行为,如下表

案例:调用系统浏览器

>当前活动

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

除了可以通过Uri.parse("http://www.baidu.com")指定响应http协议,更多的协议如下表

 还可以在目标活动<intent-filter>标签中设置一个<data>标签设置(例如下内容用于设置http协议),来指定具体的响应数据类型

android:scheme 用于指定数据的协议部分,如上例中的http;
android:host 用于指定数据的主机名部分,如www.baidu.com;
android:port 用于指定数据的端口部分,一般在主机名之后;
android:path 用于指定主机名和端口后面的部分;
android:mimeType 用于指定可以处理的数据类型。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值