Android

关注公众号 jb51net

关闭
首页 > 软件编程 > Android > Android Intent用法

Android Intent基础用法及作用详解

作者:去看全世界的云

Intent是一种重要的消息传递对象,用于在不同组件(如活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)等)之间进行通信和交互,本文介绍Android Intent基础用法及作用,感兴趣的朋友一起看看吧

使用Intent在活动中穿梭

Intent(意图)是一种重要的消息传递对象,用于在不同组件(如活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)等)之间进行通信和交互。

组成

Intent 主要由以下几个部分组成:

显式Intent

用于在应用内部启动组件(如Activity、Service、BroadcastReceiver)。显式Intent会指定要启动的组件的类名,例如:

      button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 创建一个从 MainActivity 到 SecondActivity 的 Intent
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                // 启动 SecondActivity
                startActivity(intent);
            }
       });

创建一个 Intent 对象,用于启动 SecondActivityIntent 的第一个参数是当前的 Context(即 MainActivity.this),第二个参数是要启动的目标 Activity 类(即 SecondActivity.class)。

隐式Intent

用于在不指定组件名称的情况下启动组件,而是通过指定动作(Action)、数据(Data)和类型(Type)等信息,让系统去匹配合适的组件。 启动activity

在标签中添加下面代码:

<activity
    android:name=".SecondActivity"
    android:exported="true"
    android:theme="@style/Theme.AppCompat.DayNight.DialogWhenLarge">
    <intent-filter>
        <!-- 指定动作为 com.example.menutest_716.SecondActivity -->
        <action android:name="com.example.menutest_716.SecondActivity" />
        <!-- 添加默认分类 -->
        <category android:name="android.intent.category.DEFAULT" />
        <!-- 添加自定义分类 com.example.menutest_716.MY_CATEGORY -->
        <category android:name="com.example.menutest_716.MY_CATEGORY" />
    </intent-filter>
</activity>
Button button5 = findViewById(R.id.button5);
button5.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 创建一个隐式 Intent,指定动作为 com.example.menutest_716.SecondActivity
        Intent intent = new Intent("com.example.menutest_716.SecondActivity");
        // 添加自定义分类 com.example.menutest_716.MY_CATEGORY
        intent.addCategory("com.example.menutest_716.MY_CATEGORY");
        // 启动符合条件的 Activity
        startActivity(intent);
    }
});

打开网页

button6.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 创建一个新的 Intent,动作为 ACTION_VIEW
        Intent intent = new Intent(Intent.ACTION_VIEW);
        // 设置 Intent 的数据为指定的 URI,这里是打开百度网站的示例
        intent.setData(Uri.parse("http://www.baidu.com"));
        // 启动能够处理此 Intent 的 Activity
        startActivity(intent);
    }
});

拨打电话

button8.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 创建一个拨号的 Intent
        Intent intent = new Intent(Intent.ACTION_DIAL);
        // 设置 Intent 的数据为要拨打的电话号码
        intent.setData(Uri.parse("tel:10086"));
        // 启动该 Intent,跳转到系统的拨号界面
        startActivity(intent);
    }
});

显式与隐式区别

作用

活动间传递数据

有两个活动:MainActivitySecondActivity,要从 MainActivitySecondActivity 传递数据。

MainActivity 中:

        Button button3 = findViewById(R.id.button3);
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String data  = "祝你开心永远";
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                intent.putExtra("extra_data",data);
                startActivity(intent);
            }
        });

SecondActivity 中:

onCreate 方法中获取传递过来的数据。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    // 获取传递的数据
    Intent intent = getIntent();
    String value = intent.getStringExtra("key");
}

返回数据给上一个活动

在 Android 中,如果我们需要从一个活动返回数据给上一个活动,可以使用 startActivityForResult 方法启动目标活动,并在目标活动中设置结果数据。

MainActivity 中:

// 启动 SecondActivity 并请求返回结果
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
// 重写 onActivityResult 方法来接收返回的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1 && resultCode == RESULT_OK) {
        // 从返回的 Intent 中获取数据
        String result = data.getStringExtra("result_key");
        // 处理返回的数据
    }
}

SecondActivity 中:

// 创建一个 Intent 对象并添加要返回的数据
Intent returnIntent = new Intent();
returnIntent.putExtra("result_key", "result_value");
// 设置结果并传入包含数据的 Intent
setResult(RESULT_OK, returnIntent);
// 关闭当前活动
finish();

到此这篇关于Android Intent基础用法及作用的文章就介绍到这了,更多相关Android Intent用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文