Android 开发————6、Intent

一个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对象包含组件名称、数据、动作、种类、额外和标记等内容。

猜你喜欢

转载自blog.csdn.net/fly_hps/article/details/80201177