Android——显式/隐式Intent

概述

在Android中,Intent是各个组件之间信息通信的桥梁,它用于Android各组件的通信。

Intent 的组成部分
在这里插入图片描述

一、显式 Intent

第一种方式

	Intent intent = new Intent(this, ActFinishActivity.class);startActivity(intent);

第二种方式

    Intent intent = new Intent();intent.setClass(this, ActFinishActivity.class);startActivity(intent);

第三种方式

    Intent intent = new Intent();ComponentName componentName = new ComponentName(this, ActFinishActivity.class);intent.setComponent(componentName);startActivity(intent);

可以看出第一、二种比较简单且相似,但是这两种方式都需要获取到要跳转的类。如果要跳到其他应用就不行了,用 ComponentName 这种方式可以解决,如下:

    ComponentName componentName = new ComponentName("com.example.study_android", "com.example.study_android.ActFinishActivity");

二、隐式 Intent

隐式 Intent 没有明确指定要跳转的目标活动,只给出一个动作字符串让系统自动匹配,属于模糊匹配。

  • 常见系统动作的取值说明
    在这里插入图片描述
    动作名既可以通过 setAction 方法指定,也可以通过构造函数 Intent(String action) 直接生成意图对象。
  • 跳转到拨号系统应用
    private void handleNavHidden() {String phoneNo = "12345";Intent intent = new Intent();intent.setAction(Intent.ACTION_DIAL);Uri uri = Uri.parse("tel:" + phoneNo);intent.setData(uri);startActivity(intent);}
  • 跳转到另一个APP
    private void handleNavMy() {Intent intent = new Intent();intent.setAction("android.intent.action.MYAPP");intent.addCategory(Intent.CATEGORY_DEFAULT);startActivity(intent);}

在另一个APP的主Activity中添加以下代码:

   <intent-filter><action android:name="android.intent.action.MYAPP"/><category android:name="android.intent.category.DEFAULT" /></intent-filter>

三、向下一个Activity发送数据

  • Intent 使用 Bundle 对象存放待传递的数据信息。
  • Bundle 对象操作各类型数据的读写方法说明见下表:
    在这里插入图片描述
    通过 Bundle 传递
    private void handleNextData() {Intent intent = new Intent(this, ActFinishActivity.class);Bundle bundle = new Bundle();long currentTimeMillis = System.currentTimeMillis();bundle.putString("request_time", Long.toString(currentTimeMillis));bundle.putString("request_content", "hello,world");intent.putExtras(bundle);startActivity(intent);}

在跳转后的页面中接收 Bundle

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_act_finish);tv_desc=findViewById(R.id.tv_desc);Bundle bundle = getIntent().getExtras();String request_time = bundle.getString("request_time");String request_content = bundle.getString("request_content");String desc = String.format("消息是:%s,\n时间是:%s", request_content, request_time);tv_desc.setText(desc);}

也可以不通过Bundle,直接传单个数据

 	intent.putExtra("name","张三");

接收单个数据

	String name = getIntent().getStringExtra("name");

四、向上一个Activity发送数据

步骤:

  • 当前页面通过 registerForActivityResult 注册回调
    private ActivityResultLauncher<Intent> register;
        register = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {if (result != null) {Intent intent = result.getData();if (intent != null && result.getResultCode() == Activity.RESULT_OK) {Bundle bundle = intent.getExtras();String response_time = bundle.getString("response_time");String response_content = bundle.getString("response_content");String desc = String.format("返回的消息是:%s\n,时间:%s", response_content, response_time);tv_res.setText(desc);}}});
  • 当前页面通过 register.launch 发起跳转
    private void handleDataRes() {Intent intent = new Intent(this, ActFinishActivity.class);Bundle bundle = new Bundle();long currentTimeMillis = System.currentTimeMillis();bundle.putString("request_time", Long.toString(currentTimeMillis));bundle.putString("request_content", "hello,world");bundle.putString("name", "张三");intent.putExtras(bundle);register.launch(intent);}
  • 在下个页面调用 setResult 设置数据,并通过 finish结束页面
    public void onClick(View view) {Intent intent = new Intent();Bundle bundle = new Bundle();long currentTimeMillis = System.currentTimeMillis();bundle.putString("response_time", Long.toString(currentTimeMillis));bundle.putString("response_content", "你好啊");intent.putExtras(bundle);// 携带意图返回上一个页面,RESULT_OK 表示处理成功setResult(Activity.RESULT_OK, intent);// 结束当前活动页finish();}

案例代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/57805.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时序预测 | Matlab基于TSA-LSTM-Attention被囊群优化算法优化长短期记忆网络融合注意力机制多变量多步时间序列预测

时序预测 | Matlab基于TSA-LSTM-Attention多变量多步预测 目录 时序预测 | Matlab基于TSA-LSTM-Attention多变量多步预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | Matlab基于TSA-LSTM-Attention被囊群优化算法优化长短期记忆网络融合注意力机制多变量多…

PAT甲级-1041 Be Unique

题目 题目大意 从一组数字中选出第一个唯一出现的数&#xff0c;输出该数。如果没有&#xff0c;则输出None。 思路 哈希的思想&#xff0c;将数值作为索引&#xff0c;对应该数值出现的次数&#xff0c;然后遍历数组即可。 注意第一个数字是指数字的个数&#xff0c;不是数…

LLM 使用 Elastic 实现可观察性:Azure OpenAI (二)

作者&#xff1a;来自 Elastic Muthukumar Paramasivam•Lalit Satapathy 我们为 Azure OpenAI GA 包添加了更多功能&#xff0c;现在提供提示和响应监控、PTU 部署性能跟踪和计费洞察&#xff01; 我们最近宣布了 Azure OpenAI 集成的 GA。你可以在我们之前的博客 LLM 可观察性…

仓颉刷题录-字符串数字转换(一)

文章目录 背景题目&#xff1a;交换后字典序最小的字符串个人感受 这是双子专栏&#xff1a; Cangjie仓颉程序设计-个人总结 本专栏还在持续更新&#xff1a; 仓颉编程cangjie刷题录 背景 报名了一个仓颉的比赛&#xff0c;感觉条件要求挺低的&#xff0c;就想上。哈哈哈。但…

Python画图3个小案例之“一起看流星雨”、“爱心跳动”、“烟花绚丽”

源码如下&#xff1a; import turtle # 导入turtle库&#xff0c;用于图形绘制 import random # 导入random库&#xff0c;生成随机数 import math # 导入math库&#xff0c;进行数学计算turtle.setup(1.0, 1.0) # 设置窗口大小为屏幕大小 turtle.title("流星雨动画&…

二十九、Python基础语法(继承-上)

一、概念介绍 继承&#xff1a;继承描述的是类与类之间的关系&#xff0c;集成之后子类对象可以直接使用父类中定义的方法的属性&#xff0c;可以减少代码冗余&#xff0c;提高编码效率。 二、继承语法 三、继承例子 # 定义一个父类 Animal class Animal:def __init__(self,…

‌频率和波长之间存在反比关系‌

‌频率和波长之间存在反比关系‌。根据波速公式vλf&#xff0c;在同种介质中&#xff0c;波的传播速度相同&#xff0c;因此波长和频率的乘积不变&#xff0c;即λv/f。这意味着频率越高&#xff0c;波长越短&#xff1b;频率越低&#xff0c;波长越长。 ‌频率和波数的转换公…

Rust 力扣 - 238. 除自身以外数组的乘积

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 这题主要有个关键点&#xff0c;就是元素能取0&#xff0c;然后我们分类讨论元素为0的数量 如果数组中存在至少两个元素为0&#xff0c;则每个元素的除自身以外的乘积为0如果数组中仅存在一个0&#xff0c;则为…

我们来学mysql -- 连接(原理版)

我们来学mysql -- 连接 题记两张表驱动表 题记 回到初学者的视角&#xff0c;navicat或命令窗口&#xff0c;呈现一行行数据&#xff0c;类比为excel工作薄更是深入人心通过join将多表的记录关联起来&#xff0c;这似乎也没啥问题只是好像是那么回事&#xff0c;又…似乎有想说…

Ubuntu 22.04安装部署

一、部署环境 表 1‑1 环境服务版本号系统Ubuntu22.04 server lts运行环境1JDK1.8前端WEBNginx1.8数据库postgresqlpostgresql13postgis3.1pgrouting3.1消息队列rabbitmq3.X(3.0以上)运行环境2erlang23.3.3.1 二、安装系统 2.1安装 1.安装方式&#xff0c;选第一条。 2.选择…

PHP实现全站静态化

PHP实现全站静态化是通过把动态页面转换成静态HTML文件&#xff0c;进而降低服务器压力、加快页面加载速度的技术手段。核心方法包括&#xff1a;使用缓存技术、重写URL、定时任务更新静态文件、以及利用PHP输出控制函数。在这些方法中&#xff0c;使用缓存技术属于实现全站静态…

红队-windows基础篇

声明 通过学习 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频,做出的文章如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 一.Windows&linux介绍 微软windows操作系统&#xff0c;…

QT 从ttf文件中读取图标

最近在做项目时&#xff0c;遇到需要显示一些特殊字符的需求&#xff0c;这些特殊字符无法从键盘敲出来&#xff0c;于是乎&#xff0c;发现可以从字体库文件ttf中读取显示。 参考博客&#xff1a;QT 图标字体类IconHelper封装支持Font Awesome 5-CSDN博客 该博客封装的很不错…

AnaTraf | 探秘计算机网络:网络流量分析与 TCP 标志位解析

AnaTraf 网络性能监控系统NPM | 全流量回溯分析 | 网络故障排除工具AnaTraf网络流量分析仪是一款基于全流量&#xff0c;能够实时监控网络流量和历史流量回溯分析的网络性能监控与诊断系统&#xff08;NPMD&#xff09;。通过对网络各个关键节点的监测&#xff0c;收集网络性能…

linux alsa-lib snd_pcm_open函数源码分析(三)

欢迎直接到博客 linux alsa-lib snd_pcm_open函数源码分析&#xff08;三) 系列文章其他部分: linux alsa-lib snd_pcm_open函数源码分析&#xff08;一) linux alsa-lib snd_pcm_open函数源码分析&#xff08;二) linux alsa-lib snd_pcm_open函数源码分析&#xff08;四…

瑞格智慧心理服务平台 NPreenSMSList.asmx SQL注入漏洞复现

0x01 产品简介 瑞格智慧心理服务平台是一家致力于提供个性化心理健康支持的平台。通过先进的AI技术和专业心理学家团队,为用户提供定制化的心理评估和个性化的心理咨询服务。平台注重隐私保护和数据安全,用户可以安全、便捷地接受在线咨询和心理指导,帮助他们理解和应对各种…

MATLAB口罩检测

在当今疫情严峻的背景下&#xff0c;口罩成为了人们必备的防护用品。然而&#xff0c;市面上却出现了大量假冒伪劣口罩。为了帮助大家准确辨别真假口罩&#xff0c;小编将为大家介绍一种基于MATLAB的口罩检测方法。 1.口罩检测原理 通过图像处理技术&#xff0c;借助MATLAB强大…

一款实用的Word文档图片转换与水印保护工具

目录 前言软件功能简介软件实现方法及关键代码 1. Word 文档转图片的实现2. 图片水印添加功能3. 生成数字指纹&#xff08;哈希值&#xff09;4. 保存图片信息到 JSON 文件 软件的实际使用场景软件操作指南 1. 下载和安装2. 操作流程 总结 1&#xff0c;前言 在日常办公和内…

【刷题13】链表专题

目录 一、两数相加二、两两交换链表的节点三、重排链表四、合并k个升序链表五、k个一组翻转链表 一、两数相加 题目&#xff1a; 思路&#xff1a; 注意整数是逆序存储的&#xff0c;结果要按照题目的要求用链表连接起来遍历l1的cur1&#xff0c;遍历l2的cur2&#xff0c;和…

消息队列面试——打破沙锅问到底

消息队列的面试连环炮 前言 你用过消息队列么&#xff1f;说说你们项目里是怎么用消息队列的&#xff1f; 我们有一个订单系统&#xff0c;订单系统会每次下一个新订单的时候&#xff0c;就会发送一条消息到ActiveMQ里面去&#xff0c;后台有一个库存系统&#xff0c;负责获取…