当前位置: 首页 > article >正文

鸿蒙实战:使用隐式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的UIAbilityContext
            this.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.kler.cn/a/402285.html

相关文章:

  • 对数几率回归
  • 【phpseclib】 PHP 使用加密算法 RSA、DES、AES等
  • STM32低功耗设计NFC与无线距离感应智能钥匙扣-分享
  • 广东智能装备研发制造企业源代码防泄密|源代码防泄密解决方案
  • C++ | Leetcode C++题解之第565题数组嵌套
  • Argo workflow 拉取git 并使用pvc共享文件
  • Flutter:key的作用原理(LocalKey ,GlobalKey)
  • 二级等保要求及设备有哪些?
  • Go语言内存分配源码分析学习笔记
  • oracle导入线上数据的全步骤
  • 探究IOC容器刷新环节初始化前的预处理
  • 【电路笔记 通信】:数字式时分制指令响应型多路传输数据总线 1553协议 289A-97协议
  • Linux-第1集-基础指令 pwd、cd……入门
  • MySQL - 数据库基础 | 数据库操作 | 表操作
  • Apache Dolphinscheduler数据质量源码分析
  • 淘宝商品爬虫:Python的“购物车”大冒险
  • Spring、SpringMVC、SpringBoot、Mybatis小结
  • 华为Ensp模拟器配置RIP路由协议
  • 项目学习:仿b站的视频网站项目02
  • Linux登录指令last详解