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

文章目录

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

1. 实战概述

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

2. 实现步骤

2.1 创建鸿蒙应用项目

  • 创建鸿蒙应用项目 - ImplicitWantStartAbility
  • 单击【Finish】按钮,生成应用基本框架

2.2 修改Index.ets代码

  • 首页 - Index.ets
ts 复制代码
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文件
ts 复制代码
@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,设置匹配条件
ts 复制代码
{                                                              
  "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实现页面跳转功能。从构建基本框架到完善各模块,最终达成点击按钮顺利切换页面的效果,展示了鸿蒙开发中功能实现的一套有效流程。
相关推荐
nashane7 天前
HarmonyOS 6学习:SoundPool音频防抖与Web长截图时序重构
学习·音视频·harmonyos·harmonyos 5
nashane16 天前
HarmonyOS 6学习:Web组件同层渲染事件处理与智能长截图实现
前端·学习·harmonyos·harmonyos 5
nashane16 天前
HarmonyOS 6学习:Web组件同层渲染触摸事件与长截图拼接实战
前端·学习·harmonyos·harmonyos 5
nashane17 天前
HarmonyOS 6学习:PanGesture手势驱动月亮半圆轨迹“滚动”术
学习·harmonyos 5
nashane18 天前
HarmonyOS 6学习:解决无限循环动画被打断后“消失“的诡异问题
运维·nginx·harmonyos 5
nashane21 天前
HarmonyOS 6学习:HWAsan监测开启后应用崩溃的终极解决方案
学习·华为·harmonyos·harmonyos 5
nashane21 天前
HarmonyOS 6学习:SpeechRecognitionEngine初始化报错排查实录
ide·macos·xcode·harmonyos 5
nashane22 天前
一、displayPriority的“隐藏陷阱”与根因分析
harmonyos 5
nashane22 天前
HarmonyOS 6学习:Web组件本地资源跨域访问全解析与实战
前端·学习·harmonyos·harmonyos 5
nashane1 个月前
HarmonyOS 6学习:应用签名文件丢失处理与更新完全指南
学习·华为·harmonyos·harmonyos 5