首页 > 其他分享 >鸿蒙实战:使用隐式Want启动Ability

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

时间:2024-11-22 12:43:19浏览次数:3  
标签:Index Ability 鸿蒙 ets 创建 LuzhouAbility Want 隐式 页面

文章目录

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实现页面跳转功能。从构建基本框架到完善各模块,最终达成点击按钮顺利切换页面的效果,展示了鸿蒙开发中功能实现的一套有效流程。

标签:Index,Ability,鸿蒙,ets,创建,LuzhouAbility,Want,隐式,页面
From: https://blog.csdn.net/howard2005/article/details/143879023

相关文章

  • 【鸿蒙基于API 13实战开发】—— 拉起文件处理类应用(startAbility)
    ......
  • 【鸿蒙基于API 13实战开发】—— 拉起图片编辑类应用(startAbilityByType)
    ......
  • HarmonyOS:UIAbility组件间交互(设备内)
    UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时,会涉及到启动特定的UIAbility,包括应用内的其他UIAbility、或者其他应用的UIAbility(例如启动三方支付UIAbility)。一、启动应用内的UIAbility当一个应用内包含多个UIAbility时,存在应用内启动UIAbility的场景......
  • ECON705  Housing Affordability Analysis
    ECON705 Individual ReportHousing Affordability Analysis2024/25ObjectivesThis assignment is designed to simulate real-world economic challenges, focusing on a critical issue:housing affordability. It mirrors tasks you might encounter ......
  • 【stable diffusion模型】Stability AI出官方教程了,带你轻松玩转Stable Diffusion 3.5
    前言提示(prompt)是有效使用生成式AI图像模型的关键技巧。提示的结构直接影响生成的图像的质量、创造力和准确性。今日凌晨,StabilityAI发布了StableDiffusion3.5的提示指南。该指南提供了StableDiffusion3.5的实用提示技巧,让使用者能够快速准确地完善图像概念,......
  • MATH6005/6182 probability of rainfall
    MATH6005/6182Assignment1MATH6005:Worth20%MATH6182:Worth20%Submissiondate:18thNovember,2024RulesYoumustworkonyourownonthisassignmentwithnohelpfromothersorGenAI.YoumustsubmitasingleJupyternotebookfileasasubmission......
  • Azure Availability Sets and Availability Zones
    InMicrosoftAzure,AvailabilitySetsandAvailabilityZonesarebothkeyfeaturesthatprovidehighavailabilityandfaulttoleranceforyourapplicationsandworkloads,buttheyareusedindifferentwaysandhavedifferentpurposes.Here'sabreak......
  • Unity类银河战士恶魔城学习总结(P118 Thunder Strike On Ability 制作一把带有雷电效果
    【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/本节实现了一个能给武器和水晶爆炸技能附魔的项链,取名为风暴之心都是在造成伤害函数的部分加上了触发特殊效果的代码Sword_Skill_Controller.cs修改......
  • go设计逻辑: 显示优于隐式
    显示优于隐式map类型:make(map[int]int),再没有声明长度的情况下,是可以执行的。slice类型:make([]int),在没有生命长度的情况下,则是不可以执行的。因为分配的数据结构底层逻辑不同,map是作为hash结构,支持动态扩展,有懒加载的逻辑支撑。而slice,功能上属于去掉了长度限制的数组,为了支......
  • UIAbility组件生命周期
    当用户打开、切换和返回到对应应用时,应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调,通过这些回调可以知道当前UIAbility实例的某个状态发生改变,会经过UIAbility实例的创建和销毁,或者UIAbility实例发生了前后台的状态切换。UIAbility的生命......