HarmonyOS 鸿蒙Next ArkTS语言教程入门学习第49天,使用显式Want启动Ability。

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next ArkTS语言教程入门学习第49天,使用显式Want启动Ability。 1、常见action与entities

action:表示调用方要执行的通用操作(如查看、分享、应用详情)。在隐式Want中,您可定义该字段,配合uri或parameters来表示对数据要执行的操作。

如打开,查看该uri数据。例如,当uri为一段网址,action为ohos.want.action.viewData则表示匹配可查看该网址的Ability。在Want内声明action字段

表示希望被调用方应用支持声明的操作。在被调用方应用配置文件skills字段内声明actions表示该应用支持声明操作。

常见action

  • ACTION_HOME:启动应用入口组件的动作,需要和ENTITY_HOME配合使用;系统桌面应用图标就是显式的入口组件,点击也是启动入口组件;入口组件可以配置多个。
  • ACTION_CHOOSE:选择本地资源数据,例如联系人、相册等;系统一般对不同类型的数据有对应的Picker应用,例如联系人和图库。
  • ACTION_VIEW_DATA:查看数据,当使用网址uri时,则表示显示该网址对应的内容。
  • ACTION_VIEW_MULTIPLE_DATA:发送多个数据记录的操作。

entities:表示目标Ability的类别信息(如浏览器、视频播放器),在隐式Want中是对action的补充。在隐式Want中,开发者可定义该字段,来过滤匹配应用的类别,例如必须是浏览器。在Want内声明entities字段表示希望被调用方应用属于声明的类别。在被调用方应用配置文件skills字段内声明entites表示该应用支持的类别。

常用entities

  • ENTITY_DEFAULT:默认类别无实际意义。
  • ENTITY_HOME:主屏幕有图标点击入口类别。
  • ENTITY_BROWSABLE:指示浏览器类别。

2、使用显式Want启动Ability

在应用使用场景中,当用户点击某个按钮时,应用经常需要拉起指定UIAbility组件来完成某些特定任务。下面介绍如何通过显式Want拉起应用内一个指定UIAbility组件。

开发步骤

  1. Stage模型工程内,创建一个Ability(此示例内命名为callerAbility)与相应Page(此示例中名为Index.ets),并在callerAbility.ts文件内的onWindowStageCreate函数内通过windowStage.loadContent()方法将两者绑定。

  2. 同上方法再创建一个Ability,此示例内命名为“calleeAbility”。

  3. 在callerAbility的“Index.ets”页面内新增一个按钮。

  4. 补充相对应的onClick方法,并使用显式Want在方法内启动calleeAbility。bundleName字段可在工程AppScope>app.json5文件内获取;abilityName可在对应模块内的“yourModuleName > src > main > module.json5”文件查看。

  5. 至此,当您点击CLICKME按钮时,应看到页面的跳转。


更多关于HarmonyOS 鸿蒙Next ArkTS语言教程入门学习第49天,使用显式Want启动Ability。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

这个就是Android的intent,

更多关于HarmonyOS 鸿蒙Next ArkTS语言教程入门学习第49天,使用显式Want启动Ability。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS中,使用显式Want启动Ability是一种常见的操作。显式Want通过指定目标Ability的Bundle名称和Ability名称来启动特定的Ability。

首先,显式Want的创建需要明确目标Ability的Bundle名称和Ability名称。例如:

let want = {
    bundleName: "com.example.myapp",
    abilityName: "com.example.myapp.MainAbility"
};

然后,通过startAbility方法来启动目标Ability:

this.context.startAbility(want)
    .then(() => {
        console.log("Ability started successfully");
    })
    .catch((err) => {
        console.error("Failed to start ability", err);
    });

在上述代码中,this.context是当前Ability的上下文对象。startAbility方法会返回一个Promise,成功时执行then中的代码,失败时执行catch中的代码。

显式Want启动Ability适用于明确知道目标Ability的Bundle名称和Ability名称的场景,通常在同一应用内部使用。跨应用启动Ability通常使用隐式Want。

总结:显式Want通过指定Bundle名称和Ability名称来启动特定的Ability,适用于同一应用内部的Ability启动。

在HarmonyOS ArkTS语言中,使用显式Want启动Ability是通过指定目标Ability的Bundle名称和Ability名称来实现的。首先,导入featureAbility模块,然后创建一个Want对象,通过bundleNameabilityName属性指定目标Ability。最后,调用featureAbility.startAbility()方法启动Ability。代码示例如下:

import featureAbility from '@ohos.ability.featureAbility';

let want = {
    bundleName: "com.example.myapp",
    abilityName: "com.example.myapp.MainAbility"
};

featureAbility.startAbility(want).then(() => {
    console.log("Ability started successfully");
}).catch((error) => {
    console.error("Failed to start Ability", error);
});

这种方式适用于明确知道目标Ability的场景,确保了启动的精确性。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!