Android 开发————6、Intent

本文介绍Android应用程序中组件之间的通信机制,特别是使用Intent对象的方式。详细解释了Intent的用途、分类及如何通过Intent在Activity间传递数据。

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

一个Android程序有多个组件组成,各个组件之间使用Intent进行通信。
Intent对象中包含组件名称、动作、数据等内容。
Activity、Service、Broadcast Receiver这三种核心组件都需要使用Intent来进行激活。Intent用于相同或者不同应用程序组件间的后期运行时绑定。

Intent类中,定义了一系列动作常量,其目标组件包括ActivityBroadcast两类。

(1)  组件名称

组件名称是指Intent目标组件的名称。它是一个ComponentName对象,由目标组件的完全限定类名(如:com.mingrisoft.TestActivity)和组件所在应用程序配置文件中设置的包名(com.mingrisoft)组合而成。

组件名称可以使用setComponent()、setClas()、setClassName()方法设置,使用getComponent()方法读取。

(2)  动作有两大类——Activity、Broadcast0

启动Activity的标准动作(Context.startActivity())最常用的是ACTION_MAIN和ACTION_EDIT

动作(action)--Broadcast


(3)  Activity间使用Intent传递信息

FirstActivity.java

public class FirstActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.firstactivity_layout);// 设置页面布局
        Button ok = (Button) findViewById(R.id.ok);// 通过ID值获得按钮对象
        ok.setOnClickListener(new View.OnClickListener() {// 为按钮增加单击事件监听器

            @Override
            public void onClick(View v) {
                EditText username = (EditText) findViewById(R.id.username);// 获得输入用户名的控件
                EditText password = (EditText) findViewById(R.id.password);// 获得输入密码的控件
                Intent intent = new Intent();// 创建Intent对象
          intent.putExtra("com.mingrisoft.USERNAME", username.getText().toString());// 封装用户名信息
          intent.putExtra("com.mingrisoft.PASSWORD", password.getText().toString());// 封装密码信息
                intent.setClass(FirstActivity.this, SecondActivity.class);// 指定传递对象
                startActivity(intent);// 将Intent传递给Activity
            }
        });
    }
}

SecondActivity.java

public class SecondActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.secondactivity_layout);// 设置页面布局
        Intent intent = getIntent();// 获得Intent
        String username = intent.getStringExtra("com.mingrisoft.USERNAME");// 获得用户输入的用户名
        String password = intent.getStringExtra("com.mingrisoft.PASSWORD");// 获得用户输入的密码
        TextView usernameTV = (TextView) findViewById(R.id.usr);// 获得第二个Activity的文本框控件
        TextView passwordTV = (TextView) findViewById(R.id.pwd);// 获得第二个Activity的文本框控件
        usernameTV.setText("用户名:" + username);// 设置文本框内容
        passwordTV.setText("密    码:" + password);// 设置文本框内容
    }
}
Intent分类:

Intent可以分为显示与隐式两类。

显示Intent通过组件名称来指定目标组件。由于其他应用程序的组件名称对于开发人员通常是未知的,显示Intent通常用于应用程序内部消息,例如Activity启动子Service或其他Activity。

隐式Intent不指定组件名称,通常用于激活其他应用程序中的组件。

Intent过滤器

使用Intent过滤器测试Intent对象时,对象中仅有3个方面与其相关:

动作、数据(包括URI和数据类型)、种类

Intent过滤器特点:

过滤器接受需要类型的Intent、拒绝不需要类型的Intent仅限于隐式Intent。对于显示Intent无论内容如何,总可以发行给器目标,过滤器并不干预。

Intent过滤器是IntentFilter类的实例。通常在应用程序的配置文件(AndroidManifest.xml)中配置。

Intent总结

Intent对象用于实现不同组件之间的连接。一个Intent对象包含组件名称、数据、动作、种类、额外和标记等内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FLy_鹏程万里

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

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

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

打赏作者

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

抵扣说明:

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

余额充值