HarmonyOS鸿蒙Next中Want查询和跳转

HarmonyOS鸿蒙Next中Want查询和跳转

  1. 怎么判断当前手机上有哪些应用可以处理某个特定want,并获取到这些应用的信息?
  2. @ohos.ability.wantConstant模块下的Action 常量停用的,新的@ohos.app.ability.wantAgent模块下面没有,后续会以什么情况处理停用的Action常量?
3 回复
  1. 当前能力不支持判断处理特定want,并且包管理对应的获取其他应用信息的接口当前只针对系统应用开放,三方应用暂不支持。
  2. Action打开页面可以参考如下demo,该demo需要打开网络权限并开启网络。
import common from '@ohos.app.ability.common';
@Component
struct Index {
    @State message: string = 'Hello World1';
    build() {
        Row() {
            Column() {
                Text(this.message)
                    .fontSize(50)
                    .fontWeight(FontWeight.Bold)
                Button('打开预览')
                    .onClick(() => {
                        let context = getContext(this) as common.UIAbilityContext;
                        context.startAbility({
                            'action': 'ohos.want.action.viewData',
                            'entities': ['entity.system.browsable'],
                            'uri': "http://www.52mvp.com/policy_mxtq_cn.html",
                        }, (err) => {
                            console.error(`Failed to startAbility. Code: ${err.code}, message: ${err.message}`);
                        });
                    })
            }
            .width('100%')
        }
        .height('100%')
    }
}

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-ability-featureability-V5#featureabilitystartability

更多关于HarmonyOS鸿蒙Next中Want查询和跳转的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,Want是用于实现应用间通信和跳转的机制。Want对象包含目标组件的描述信息,如包名、类名等。通过Want,应用可以启动其他应用的特定组件,如Activity、Service等。查询Want时,系统会根据描述信息匹配并启动目标组件。跳转过程由系统管理,确保安全和权限控制。Want机制支持隐式和显式两种方式,隐式通过Action匹配,显式直接指定目标组件。

  1. 在HarmonyOS Next中查询可处理特定Want的应用:
  • 使用abilityManager.queryAbilities()方法,传入包含action/uri等参数的Want对象
  • 返回的数组包含所有匹配应用的AbilityInfo信息(bundleName、icon、label等)
  • 示例代码:
let want = {
  action: 'ohos.want.action.viewData',
  uri: 'https://example.com'
};
let abilityInfos = await abilityManager.queryAbilities(want);
  1. 关于WantConstant.Action迁移问题:
  • @ohos.ability.wantConstant中的Action常量已迁移到@ohos.app.ability.wantConstant
  • 新版本推荐使用wantConstant.Action.VIEW等新常量
  • 旧版常量目前保持兼容但会逐步废弃,建议尽快迁移到新模块
  • 系统级标准Action(如VIEW/SEND等)会持续维护,应用自定义Action不受影响,
回到顶部