Android学习之Intent

Intent

Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务以及发送广播等场景,

显示intent

  • 第一个参数Context要求提供一个启动活动的上下文
  • 第二个参数Class则是指定想要启动的目标活动,

专门用于启动活动

startActivity()方法

配置好第二个活动后,在主活动里配置以下,主要是Intent那两行

java 复制代码
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                Toast.makeText(MainActivity.this, "you clicked 1", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(MainActivity.this, second_activity.class);
                startActivity(intent);
            }
        });

隐式Intent

它并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,并帮我们找岀合适的活动去启动。

怎么操作呢?

通过在标签下配置的内容,可以指定当前活动能够响应的action和category,打开AndroidManifest.xml

ini 复制代码
        <activity
            android:name=".second_activity"
            android:exported="true">
            <intent-filter>
                <action android:name="com.example.intent.MainActivity"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

只有<action>和〈category〉中的内容同时能够匹配上Intent中指定的action和category时,这个活动才能响应该Intent

应用程序打开浏览器

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

setData()接收一个url对象,主要用于指定当前Intent正在操作的数据,而这些数据通常都是以字符串的形式传入到Uri.parse()方法中解析产生的。

标签
  • android:scheme 用于指定数据的协议部分,如上例中的http部分。
  • android :host 用于指定数据的主机名部分,如上例中的www.baidu.com部分
  • android:port 用于指定数据的端口部分,一般紧随在主机名之后
  • android:path 用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容
  • android :mimeType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定

传递数据

Intent中提供了一系列putExtraO方法的重载,可 以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,只需要把这些数据再从Intent中取岀就可以了。

以上所有代码合集:

ini 复制代码
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /**
                 * 响应Toast
                 */
//                Toast.makeText(MainActivity.this, "you clicked 1", Toast.LENGTH_SHORT).show();
                /**
                 * 显式Intent
                 */
//                Intent intent = new Intent(MainActivity.this, second_activity.class);
//                startActivity(intent);
                /**
                 * 隐式intent
                 */
//                Intent intent = new Intent("com.example.intent.MainActivity");
//                intent.addCategory("com.example.intent.MY_CATEGORY");
//                startActivity(intent);
                /**
                 * 打开浏览器
                 */
//                Intent intent = new Intent(Intent.ACTION_VIEW);
//                intent.setData(Uri.parse("http://www.baidu.com"));
//                startActivity(intent);
                /**
                 * 调动拨号
                 */
//                Intent intent = new Intent(Intent.ACTION_DIAL);
//                intent.setData(Uri.parse("tel: 10086"));
//                startActivity(intent);
                /**
                 * 传递数据
                 */
//                String data =  "hello SecondActivity";
//                Intent intent = new Intent(MainActivity.this, second_activity.class);
//                intent.putExtra("extra_data", data);
//                startActivity(intent);
            }
        });

传递数据时另外一个活动代码:

ini 复制代码
        /**
         * 接受数据代码
         */
        Intent intent = getIntent();
        String data = intent.getStringExtra("extra_data");
        Log.d("SecondActivity", data);
相关推荐
CedarQR14 分钟前
云卓 G20 遥控器 Android 开发实录:从 USB 设备到读取摇杆/按键通道值
android·linux·无人机
pengyu1 小时前
【Kotlin 协程修仙录 · 炼虚境 · 初阶】 | 虚空造物:Channel 基础与协程间通信的管道艺术
android·前端·kotlin
小强闯江湖1 小时前
ViewCompose:让原生 Android View 进入声明式时代
android·开源·kotlin
摇滚侠3 小时前
《SpringBoot 3:入门与应用实战》第 6 章 Spring Boot 最佳实践 阅读笔记 12
android·spring boot·笔记
mmsx3 小时前
Android 宠物健康服务平台实战:从架构设计到主题换肤完整解析(源码和文档)
android·架构·sqlite·app·源码·宠物
、如果4 小时前
ima Skills 自进化实战:三层结构、反馈与版本验证
android·人工智能·ai编程
hunterandroid4 小时前
自定义 View 绘制与触摸冲突:从滑动卡顿到事件分发闭环
android·前端
weixin_403810134 小时前
安卓自动化脚本 HID 硬件选购指南:蓝牙HID与OTG HID区别、成本与搭建教程
android·运维·自动化·hid·安卓自动化脚本·安卓中控
qq_316837755 小时前
uniapp 安卓/H5 使用 contentEditable 属性 富文本编辑器
android·javascript·uni-app
二流小码农5 小时前
鸿蒙开发:了解Context
android·ios·harmonyos