HarmonyOS 应用开发之Want的定义与用途

news/2024/7/21 9:47:16 标签: harmonyos, 华为, 移动开发, 鸿蒙开发, ui

Want 是一种对象,用于在应用组件之间传递信息。

其中,一种常见的使用场景是作为 startAbility() 方法的参数。例如,当UIAbilityA需要启动UIAbilityB并向UIAbilityB传递一些数据时,可以使用Want作为一个载体,将数据传递给UIAbilityB。

图1 Want用法示意

Want的类型

  • 显式Want:在启动目标应用组件时,调用方传入的want参数中指定了abilityName和bundleName,称为显式Want。

    显式Want通常用于在当前应用中启动已知的目标应用组件,通过提供目标应用组件所在应用的Bundle名称信息(bundleName)并在Want对象内指定abilityName来启动目标应用组件。当有明确处理请求的对象时,显式Want是一种简单有效的启动目标应用组件的方式。

import Want from '@ohos.app.ability.Want';

let wantInfo: Want = {
  deviceId: '', // deviceId为空表示本设备
  bundleName: 'com.example.myapplication',
  abilityName: 'FuncAbility',
}
  • 隐式Want:在启动目标应用组件时,调用方传入的want参数中未指定abilityName,称为隐式Want。

当需要处理的对象不明确时,可以使用隐式Want,在当前应用中使用其他应用提供的某个能力,而不关心提供该能力的具体应用。隐式Want使用 skills标签 来定义需要使用的能力,并由系统匹配声明支持该请求的所有应用来处理请求。例如,需要打开一个链接的请求,系统将匹配所有声明支持该请求的应用,然后让用户选择使用哪个应用打开链接。

import Want from '@ohos.app.ability.Want';

let wantInfo: Want = {
  // uncomment line below if wish to implicitly query only in the specific bundle.
  // bundleName: 'com.example.myapplication',
  action: 'ohos.want.action.search',
  // entities can be omitted
  entities: [ 'entity.system.browsable' ],
  uri: 'https://www.test.com:8080/query/student',
  type: 'text/plain',
};

说明:

  • 根据系统中待匹配应用组件的匹配情况不同,使用隐式Want启动应用组件时会出现以下三种情况。
  • 未匹配到满足条件的应用组件:启动失败。
  • 匹配到一个满足条件的应用组件:直接启动该应用组件。
  • 匹配到多个满足条件的应用组件(UIAbility):弹出选择框让用户选择。
  • 对于启动ServiceExtensionAbility的场景:
  • 调用方传入的want参数中带有abilityName,则不允许通过隐式Want启动ServiceExtensionAbility。
  • 调用方传入的want参数中带有bundleName,则允许使用startServiceExtensionAbility()方法隐式Want启动ServiceExtensionAbility,默认返回优先级最高的ServiceExtensionAbility,如果优先级相同,返回第一个。

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.
鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向


http://www.niftyadmin.cn/n/5460188.html

相关文章

周末总结(2024/03/30)

工作 接受破烂现状,改变状态 上周一周的工作都感觉是摸鱼状态,每天只有三个小时左右的时间聚焦在工作上,其他时间都在胡思乱想。但是我发现可以在工作中学习和下班相关的技术栈。我无意改变自己的工作状态,只想在5月底找好下家然后…

JavaWeb作业四

一. 单选题(共5题,30分) 1. (单选题, 6分) 以下关于Spring核心容器相关说法错误的是。 A Spring框架的所有功能都是通过其核心容器来实现的。 B 创建BeanFactory实例时,需要提供Spring所管理容器的详细配置信息,这…

【Java面试题】Redis中篇(高可用:主从复制、哨兵、集群)

文章目录 高可用14.Redis如何保证高可用?15.Redis的主从复制?16.Redis主从有几种常见的拓扑结构?17.Redis的主从复制原理了解吗?18.说说主从数据同步的方式?19.主从复制存在的问题?20.Redis Sentinel(哨兵)…

vue 通过插槽来分配内容

通过插槽来分配内容 一些情况下我们会希望能和 HTML 元素一样向组件中传递内容&#xff1a; <AlertBox>Something bad happened. </AlertBox> 这可以通过 Vue 的自定义 <slot> 元素来实现&#xff1a; <template><div class"alert-box&quo…

手写简易操作系统(十八)--实现用户进程

一、TSS TSS是Task State Segment的缩写&#xff0c;即任务状态段&#xff0c;早在简述特权级的时候我们就讲过了一点 手写简易操作系统(八)&#xff0c;现在我们讲一下这些保存的寄存器是干嘛的。 这一部分需要讲点历史&#xff0c;硬件与软件的关系是相互促进的&#xff0c…

C++项目——集群聊天服务器项目(九)客户端异常退出业务

服务器端应检测到客户端是否异常退出&#xff0c;因此本节来实现客户端异常退出&#xff0c;项目流程见后文 一、客户端异常退出业务流程 &#xff08;1&#xff09;在业务模块定义处理客户端异常退出的函数 &#xff08;2&#xff09;集群聊天服务器项目(八&#xff09;提到…

【实现报告】学生信息管理系统(链表实现)

目录 实验一 线性表的基本操作 一、实验目的 二、实验内容 三、实验提示 四、实验要求 五、实验代码如下&#xff1a; &#xff08;一&#xff09;链表的构建及初始化 学生信息结构体定义 定义元素类型 链表节点结构体定义 初始化链表 &#xff08;二&#xff09;…

C语言字符函数和字符串函数的详解

字符转换函数 头文件是 ctype.h 具体使用大家可去参考官方文档 字符串函数 字符串函数头文件是string.h strlen strlen 函数是计算某个字符串的长度&#xff0c;遇到 \0 就会停止计算 使用起来也是很方便&#xff0c;就是闯入一个字符串的地址&#xff1a; 模拟实现&a…