鸿蒙实战:使用隐式Want启动Ability

文章目录

  • 1. 实战概述
  • 2. 实现步骤
    • 2.1 创建鸿蒙应用项目
    • 2.2 修改Index.ets代码
    • 2.3 创建LuzhouAbility
    • 2.4 创建Luzhou页面
    • 2.5 设置模块配置文件
  • 3. 测试效果
  • 4. 实战总结

1. 实战概述

  • 本次鸿蒙应用实战,先创建项目“ImplicitWantStartAbility”,接着修改Index.ets等代码构建页面与隐式Want逻辑,创建Luzhou相关文件及设置配置文件匹配条件,最终测试时点击按钮可隐式匹配,实现从首页跳转至泸州页面的效果。

2. 实现步骤

2.1 创建鸿蒙应用项目

  • 创建鸿蒙应用项目 - ImplicitWantStartAbility
    在这里插入图片描述
  • 单击【Finish】按钮,生成应用基本框架
    在这里插入图片描述

2.2 修改Index.ets代码

  • 首页 - Index.ets
    在这里插入图片描述
import { common, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';const TAG: string = '[Page_Index]';
const DOMAIN_NUMBER: number = 0xFF00;@Entry
@Component
struct Index {@State message: string = 'Index页面';private context = getContext(this) as common.UIAbilityContext;build() {Row() {Column() {Text(this.message).fontSize(40).fontWeight(FontWeight.Bold).foregroundColor(Color.Yellow).margin('10')// 添加按钮Button('去泸州').fontSize(40).width(250).height(70).backgroundColor('#44dd22').foregroundColor('#ffffff').onClick(() => {// 创建隐式Want对象let wantInfo: Want = {action: 'action.huawei.luzhou',entities: ['entity.huawei.luzhou']};// context为调用方UIAbility的UIAbilityContextthis.context.startAbility(wantInfo).then(() => {hilog.info(DOMAIN_NUMBER, TAG, 'startAbility success.');}).catch((error: BusinessError) => {hilog.error(DOMAIN_NUMBER, TAG, 'startAbility failed.');});});}.width('100%');}.height('100%').backgroundColor('#00662F')}
}
  • 代码说明:这段代码基于鸿蒙开发框架编写。Index组件构建页面,含文本与按钮。点击“去泸州”按钮时,构造含特定actionentities的隐式Want对象,通过上下文尝试启动对应能力,同时利用日志记录启动成功或失败情况,实现交互并监测启动结果。

2.3 创建LuzhouAbility

  • ets里创建LuzhouAbility.ets
    在这里插入图片描述
  • 修改代码,将pages/Index改成pages/Luzhou
    在这里插入图片描述

2.4 创建Luzhou页面

  • pages里创建Luzhou.ets文件
    在这里插入图片描述
@Entry
@Component
struct Luzhou {@State message: string = '泸州欢迎您';build() {Row() {Column() {Text(this.message).fontSize(40).fontWeight(FontWeight.Bold).foregroundColor(Color.Yellow)         }.width('100%');}.height('100%').backgroundColor('#00008B')}
}

2.5 设置模块配置文件

  • 模块配置文件 - module.json5
    在这里插入图片描述
  • LuzhouAbility里添加skills,设置匹配条件
    在这里插入图片描述
{                                                              "name": "LuzhouAbility",                                     "srcEntry": "./ets/luzhouability/LuzhouAbility.ets",         "description": "$string:LuzhouAbility_desc",                 "icon": "$media:layered_image",                              "label": "$string:LuzhouAbility_label",                      "startWindowIcon": "$media:startIcon",                       "startWindowBackground": "$color:start_window_background",   "skills": [                                                  {                                                          "entities": [                                            "entity.huawei.luzhou"                                 ],                                                       "actions": [                                             "action.huawei.luzhou"                                 ]                                                        }                                                          ]                                                            
}                                                              

3. 测试效果

  • 启动应用,显式首页
    在这里插入图片描述
  • 单击【去泸州】按钮,隐式匹配,跳转到泸州页面
    在这里插入图片描述

4. 实战总结

  • 本次鸿蒙应用实战,通过创建项目、修改代码、创建页面及配置文件等系列操作,利用隐式Want实现页面跳转功能。从构建基本框架到完善各模块,最终达成点击按钮顺利切换页面的效果,展示了鸿蒙开发中功能实现的一套有效流程。

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

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

相关文章

两数之和 python

两数之和 题目描述示例1示例2示例3提示leetcode链接解题思路Python 实现详细解释 题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应…

Android ConstraintLayout 基础

Android ConstraintLayout 基础 屏障线 Barrier设置水平和垂直方向的约束关系长宽比链式结构组站位辅助线 参考地址 屏障线 Barrier 以下是使用 ConstraintLayout 在 Android 中实现简单屏障线(Barrier)使用的示例代码,主要步骤如下&#xf…

NLP论文速读(多伦多大学)|利用人类偏好校准来调整机器翻译的元指标

论文速读|MetaMetrics-MT: Tuning Meta-Metrics for Machine Translation via Human Preference Calibration 论文信息: 简介: 本文的背景是机器翻译(MT)任务的评估。在机器翻译领域,由于不同场景和语言对的需求差异&a…

AJAX学习(24.11.1-24.11.14)(包含HTTP协议)

AJAX学习(24.11.1-11.14) 来源: 传智 | 高校学习平台-首页 传智播课:黑马程序员 1.服务器和客户端 1.服务器:存放和对外提供资源的电脑。 2.客户端(用户):获取和消费资源的电脑。&#xff0…

AI 驱动低代码平台:开创智能化用户体验新纪元

一、引言 人工智能技术如汹涌浪潮般迅猛发展,在各个行业掀起了颠覆性的变革风暴。于软件开发领域而言,AI 辅助编程与低代码平台的完美结合已然成为关键趋势,极大地提高了开发效率。然而,低代码平台的使命绝非仅仅局限于简化开发流…

【Python】深入理解Python中的懒加载:从零实现按需加载提升程序性能

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 懒加载(Lazy Loading)是一种在实际需要时才加载数据或资源的编程技术,广泛应用于提升程序的性能和启动速度。尤其在Python中,懒加载机制可以显著降低初始化时间和内存占用。本文详细介绍如何在Python中…

好用的js组件库

lodash https://www.lodashjs.com/https://www.lodashjs.com/ uuid 用于生成随机数,常用于生成id标识 GitHub - uuidjs/uuid: Generate RFC-compliant UUIDs in JavaScripthttps://github.com/uuidjs/uuid dayjs 常用于时间的处理 安装 | Day.js中文网 (fenxi…

基于麒麟服务器操作系统V10版本,部署Nginx服务、MySql服务搭建PHP环境,实现静态网站平台的搭建。

一、环境准备 关闭防火墙。 查看当前防火墙的状态 systemctl status firewalld Copy 如果防火墙的状态参数是inactive,则防火墙为关闭状态。 如果防火墙的状态参数是active,则防火墙为开启状态。 关闭防火墙。 如果您想临时关闭防火墙,需要运行以下命令: systemctl…

[JavaWeb] 尚硅谷JavaWeb课程笔记

1 Tomcat服务器 Tomcat目录结构 bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat10.exe、tomcat10w.exe,前者是在控制台下启动Tomcat,后者是弹出GUI窗口启动To…

Spring Security 中的 UserDetailsService

在本篇博客中,我们将探讨 UserDetailsService 的重要性,以及如何通过实际示例在 Spring Security 中实现它。 理解 UserDetailsService UserDetailsService 是 Spring Security 提供的一个接口,用于在认证过程中获取用户详细信息。DaoAuthe…

SRP 实现 Cook-Torrance BRDF

写的很乱! BRDF(Bidirectional Reflectance Distribution Function)全称双向反射分布函数。辐射量单位非常多,这里为方便直观理解,会用非常不严谨的光照强度来解释说明。 BRDF光照模型,上反射率公式&#…

向量数据库FAISS之五:原理(LSH、PQ、HNSW、IVF)

1.Locality Sensitive Hashing (LSH) 使用 Shingling MinHashing 进行查找 左侧是字典,右侧是 LSH。目的是把足够相似的索引放在同一个桶内。 LSH 有很多的版本,很灵活,这里先介绍第一个版本,也是原始版本 Shingling one-hot …

基于YOLOv8深度学习的无人机航拍小目标检测系统(PyQt5界面+数据集+训练代码)

本研究提出并实现了一种基于YOLOv8深度学习模型的无人机航拍小目标检测系统,旨在解决高空环境下汽车目标检测的技术难题。随着无人机技术的发展,航拍图像已广泛应用于交通监控、城市管理、灾害应急等多个领域。然而,由于无人机通常在较高的飞…

LeetCode 热题 100 回顾

目录 一、哈希部分 1.两数之和 (简单) 2.字母异位词分组 (中等) 3.最长连续序列 (中等) 二、双指针部分 4.移动零 (简单) 5.盛最多水的容器 (中等) 6…

使用 PyTorch 实现 ZFNet 进行 MNIST 图像分类

在本篇博客中,我们将通过两个主要部分来演示如何使用 PyTorch 实现 ZFNet,并在 MNIST 数据集上进行训练和测试。ZFNet(ZFNet)是基于卷积神经网络(CNN)的图像分类模型,广泛用于图像识别任务。 环…

【计算机网络实验】之静态路由配置

【计算机网络实验】之静态路由配置 实验题目实验目的实验任务实验设备实验环境实验步骤路由器配置设置静态路由测试路由器之间的连通性配置主机PC的IP测试 实验题目 静态路由协议的配置 实验目的 熟悉路由器工作原理和机制;巩固静态路由理论;设计简单…

driver.js实现页面操作指引

概述 在访问某些网站的时候,第一次进去你会发现有个操作指引,本文引用driver.js,教你在你的页面也加入这般高大上的操作指引。 实现效果 实现 driver.js简介 driver.js是一个功能强大且高度可定制的基于原生JavaScript开发的新用户引导库…

《C++ 实现区块链:区块时间戳的存储与验证机制解析》

在区块链这个复杂而精妙的技术架构中,时间戳是一个至关重要的元素,尤其当我们使用 C 来实现区块链时,对区块时间戳的存储和验证机制设计更是不容忽视。这一机制如同区块链的时间脉搏,为整个系统的有序运行和数据可信性提供了坚实的…

Ubuntu24.04普通安装mysql

Ubuntu24.04普通安装mysql 1、初始化mysql时报错 /opt/sudytech/mysql/bin/mysqld --initialize-insecure/opt/sudytech/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory解决方法: find …

无人机航测技术算法概述!

一、核心技术 传感器技术: GPS/GLONASS:无人机通过卫星定位系统实现高精度的飞行控制和数据采集。 高清相机:用于拍摄地面图像,通过后续图像处理生成三维模型。 激光雷达(LiDAR):通过激光扫…