Android中的Intent

一.显式Intent

显示Intent是明确目标Activity的类名
1. 通过Intent(Context packageContext, Class<?> cls)构造方法
2.通过Intent的setComponent()方法
3.通过Intent的setClass/setClassName方法

通过Intent(Context packageContext, Class<?> cls)构造方法

通过Intent的setComponent()方法

通过Intent的setClass/setClassName方法

setClass源码:

 public @NonNull Intent setClass(@NonNull Context packageContext, @NonNull Class<?> cls) {
        mComponent = new ComponentName(packageContext, cls);
        return this;
    }

setClassName源码:

    public @NonNull Intent setClassName(@NonNull String packageName, @NonNull String className) {
        mComponent = new ComponentName(packageName, className);
        return this;
    }

public @NonNull Intent setClassName(@NonNull Context packageContext,
            @NonNull String className) {
        mComponent = new ComponentName(packageContext, className);
        return this;
    }

我们发现setClass与setClassName最后都是通过ComponetName来实现的。

二.隐式Intent

隐式Intent通过设置Action、Data、Category,让系统来筛选出合适的Activity。
筛选是根据所有的<intent-filter>来筛选。

如下:

然后使用的时候就可以直接把action放到Intent中:

这样就会跳转到声明隐式Intent的app中。

我们唤起手机拨号界面的action是:

 public static final String ACTION_DIAL = "android.intent.action.DIAL";


然后我们又在自己的app里面声明了和拨打电话一样的action

然后回到主页面通过下列代码调用:

val intent = Intent(Intent.ACTION_DIAL)
        startActivity(intent)

会发送什么呢?

答案是会唤起一个选择界面任用户选择真正跳转的页面,是拨号页面还是我们的SecondActivity。

注意:如果是同项目的activity跳转,我们使用显式的Intent,如果是创建一个activity给外部程序使用,那么使用隐式Intent。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TikTok被限流怎么办?破解0播放方法在这!

Tiktok是目前增长较快的社交平台&#xff0c;也是中外年轻一代首选的社交平台&#xff0c;许多出海品牌已经看到了TikTok营销的潜力&#xff0c;专注于通过视频、电商入驻来加入TikTok这片蓝海&#xff0c;加深品牌影响力&#xff0c;获得变现。 然而TikTok新手往往都会遇到一…

2023春季李宏毅机器学习笔记 05 :机器如何生成图像

资料 课程主页&#xff1a;https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.phpGithub&#xff1a;https://github.com/Fafa-DL/Lhy_Machine_LearningB站课程&#xff1a;https://space.bilibili.com/253734135/channel/collectiondetail?sid2014800 一、图像生成常见模型…

使用 Swagger 导入 Postman: 最佳实践与步骤解析

Swagger和 Postman 都是常用的 API 测试工具&#xff0c;都有各自的优势。为了结合两者的优点&#xff0c;我们可以考虑将 Swagger 中的 API 定义导入到 Postman 中去&#xff0c;这样就可以利用 Postman 更强大的测试功能来测试 Swagger 定义的接口。 下面将以 Swagger Petst…

【本科生通信原理】【实验报告】【北京航空航天大学】实验一:通信原理初步

一、实验目的&#xff1a; 熟悉 MATLAB开发环境、掌握 MATLAB基本运算操作&#xff1b;熟悉和了解 MATLAB图形绘制基本指令&#xff1b;熟悉使用 MATLAB分析信号频谱的过程&#xff1b;掌握加性白高斯噪声信道模型 二、实验内容&#xff1a; 三、实验程序&#xff1a; 1、 f…

Linux编辑器vim的基本操作(详解及GIF演示)

&#x1f4ab;Linux开发工具vim 在我们初学某门语言时可能接触过使用记事本编辑代码&#xff0c;在之后我们开始接触visual studio等集成开发环境&#xff0c;对于这种基于图形化界面的编辑工具我们可以说已经十分熟悉了&#xff0c;那么接下来我们就来介绍一下Linux中的编辑器…

【linux学习】linux概述

操作系统主要的功能有两个部分&#xff0c;一是更有效率的控制计算机硬件资源&#xff08;主要通过核心来控制&#xff09;&#xff0c;二是为程序设计师提供更容易开发软件的环境&#xff08;系统呼叫提供软件开发环境&#xff09;。linux就是一套操作系统&#xff0c;linux就…

【数据结构】二叉树(二)——顺序结构

前言 本篇博客讲解数组实现二叉树的顺序结构 文章目录 一、二叉树的顺序结构及实现1.1 二叉树的顺序结构1.2 堆的概念1.3 堆的实现1.3.1 初始化堆1.3.2 向堆中插入元素1.3.3 从堆顶删除1.3.4 其他操作1.3.5 完整代码Heap.hHeap.c 1.4 堆的应用1.4.1 堆排序1.4.2 TOP-K问题 一、…

Ubuntu18.04 升级Ubuntu20.04

文章目录 背景升级方法遇到的问题 背景 因项目环境需要&#xff0c;欲将Ubuntu18.04升级至Ubuntu20.04&#xff0c;参考网上其他小伙伴的方法&#xff0c;也遇到了一个问题&#xff0c;特此记录一下&#xff0c;希望能帮助其他有同样问题的小伙伴。 升级方法 参考&#xff1a…

【React系列】Hook(一)基本使用

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 认识hook 1.1. 为什么需要hook Hook 是 React 16.8 的新增特性&#xff0c;它可以让我们在不编写class的情况下…

计算机研究生论文检索方法汇总

计算机研究生论文检索方法汇总 作为一名优质(冤种)计算机在读研究生&#xff0c;检索论文是一项不可或缺的技能之一。 一、paperwithcode paperswithcode是一个免费开放的资源平台&#xff0c;提供了机器学习领域的论文、代码、数据集、方法和评估表。在这里我们可以检索不同…

题目:大石头的搬运工(蓝桥OJ 3829)

问题描述&#xff1a; 解题思路&#xff1a; 官方&#xff1a; 注意点&#xff1a; 1.直观方法无法使用&#xff0c;因为其时间复杂度为O(n2)。带入题目数据n最大为1e5则时间复杂度为1e10&#xff0c;超过了运行限制&#xff08;默认1e8&#xff09;。 2.pair不会自动排序&…

vscode安装Prettier插件,对vue3项目进行格式化

之前vscode因为安装了Vue Language Features (Volar)插件&#xff0c;导致Prettier格式化失效&#xff0c;今天有空&#xff0c;又重新设置了一下 1. 插件要先安装上 2. 打开settings.json {"editor.defaultFormatter": "esbenp.prettier-vscode","…

Hex2Bin转换工具文档、Bootloader 、OTA 、STM32等MCU适用

说明&#xff1a;这个工具可以将 Hex 文件 转换为 Bin 格式文件&#xff0c;软件是按自己开发 STM32 OAT 功能需求开发的一款辅助 上位机软件。 有兴趣的朋友可留言探讨。 附加功能&#xff1a; 1.另外可以生成指定大小的bin 格式文件&#xff0c;文件多余的空余位置填充随机…

GZ075 云计算应用赛题第6套

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷6 某企业根据自身业务需求&#xff0c;实施数字化转型&#xff0c;规划和建设数字化平台&#xff0c;平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”&#xff0c;拟采用开源OpenSt…

可狱可囚的爬虫系列课程 10:在网站中寻找 API 接口

上一篇文章我们讲述了爬虫中一个比较重要的知识点&#xff0c;如何从 API 接口中获取数据&#xff0c;本篇文章我们继续讲述&#xff0c;如何在网站中寻找 API 接口&#xff0c;我们以“今日头条”网站 https://www.toutiao.com/ 为例。 如上图所示&#xff0c;如果要获取页面…

JumpServer3.0版本-账号管理

账号列表 我这里已经创建好了所以有很多,可以点击资产树列表分类查看 点击创建按钮,添加账号 资产:如果多个设备的账号密码一致可以在资产同事选中 名称:方便辨识即可 用户名:登录设备的账户名 密码:按你登录需求自行选择 添加按钮旁边还有个“模版添加” 此功能便…

Linux第3步_安装Ubuntu操作系统

创建好虚拟机后&#xff0c;就可以安装Ubuntu操作系统了。 1、双击“VMware Workstation Pro”&#xff0c;得到下面的界面。 2、点击“编辑虚拟机设置”&#xff0c;见下图&#xff1a; 3、等几秒钟&#xff0c;得到下面的界面&#xff1a; 4、点击“CD/DVD”&#xff0c;得到…

【SpringBoot】Java MVC 集成 Swagger 生成 API 文档

使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。官网: https://swagger.io/ Knife4j 是为Java MVC框架集成Swagger生成Api文档的增强解决方案。 <dependency><groupId>com.github.xiaoymin</groupI…

七款人体感应报警器电路图

人体感应报警器电路图&#xff08;一&#xff09; 人体发出的红外线波长在9&#xff5e;10um之间&#xff0c;属远红外线区。我们利用热释电红外传感器及信号处理集成电路&#xff0c;组装成一个人体红外线感应开关电路报警器&#xff0c;它能依靠人体发出的微量红外线进行开关…

how2heap-2.23-07-unsafe_unlink

unlink的作用 在glibc-2.23的malloc.c中搜索unlink&#xff0c;找到unlink的使用场景 _int_malloc 从恰好大小合适的largebin中获取chunk&#xff0c;发生unlink从比malloc要求大的largebin中取chunk&#xff0c;发生unlink _int_free free之后&#xff0c;与前后空闲的chunk…