Want 概述

一、Want概述

1.1、Want的用途
  • 在Stage模型中,Want是对象间信息传递的载体,可以用在应用组件间的信息传递。相当于FA模型的Intent。
  • 作为startAbility的参数,包含指定的启动目标,以及启动时需要携带的相关数据(bundleName和AbilityName字段分别指明目标Ability所在应用的包名以及对应的Ability名称)。
1.2、Want的分类
  1. 显示Want
  • 在启动Ability时指定了abilityName和bundleName的Want叫做显示Want。
  • 当有明确处理请求的对象时,通过提供目标Ability所在应用的包名信息(bundleName),并在Want内指定abilityName即可启动目标Ability。显示Want通常在启动当前应用开发中某个已知的Ability时被用到。
let want:Want = {
  deviceId:'',
  bundleName:'',
  abilityName:''
}
  1. 隐式Want
  • 在启动时未指定abilityName和Want叫做隐式Want。
  • 在请求处理的对象不明确时,如开发者希望在当前应用中使用其他应用提供的某个能力(通过skill定义),而不关心提供该能力的具体应用时,可以使用隐式Want。例如使用隐式Want打开一个链接的请求时,系统将匹配声明支持该请求的所有应用,当未匹配到支持的应用时,系统将弹窗说明无法打开,当仅匹配一个时,系统将自动拉起对应应用,当匹配多个时,系统会弹出候选项,由用户自己选择
let want:Want = {
  action:'ohos,want,action,search',
  entities:['entity.system.browsable'],
  uri:'http://www.test.com/query/search',
  type:'text/plan'
}
  1. action表示调用方要执行的通用操作
  • action表示调用方要执行的通用操作(如查看,分享,应用详情)。在隐式Want中,可定义该字段,配合uri和parameters来表示对数据要执行的操作,比如打开,查看该uri数据等。
  • 当uri为一段网址时,action为’ohos.want.action.viewData’时,表示匹配可查看该网址的Ability。
  • 在Want内声明action字段,表示希望被调用方应用支持声明的操作。在被调用方应用配置文件skills字段内声明action字段,表示该应用支持声明操作。
  • 常见的action:
ACTION_HOEM启动应用入口组件的动作
ACTION_CHOOSE选择本地资源数据,例如联系人,相册等,系统一般对不同类型的数据有对应的Picker应用
ACTION_VIEW_DATA查看数据,但使用网址时,表示显示该网址对用的内容
ACTION_VIEW_MULTIPLE_DATA发送多个数据记录的操作
  1. entities表示目标Ability的类别信息
  • entities表示目标Ability的类别信息(浏览器,视频播放器),在隐式Want中是对action的补充
  • 在隐式Want中,开发者可定义该字段来过滤匹配应用的类别,例如是浏览器或者是播放器
  • 在Want中声明entities字段,表示希望被调用方应用属于声明的类型。在被调用方应用配置文件skills字段中声明entities,表示该应用支持的类别
ENTITY_DEFAULT默认类别,无实际意义
ENTITY_HOME主屏幕有图标单击入口类别
ENTITY_BROWSABLE指示浏览器类别
1.3、Want参数属性
名称类型描述
deviceIdstring表示目标Ability所在的设备ID,如果未设置,表示本设备
bundleNamestring表示目标Ability所在的应用名称
moduleNamestring表示目标Ability所在的模块名称
abilityNamestring表示目标的Ability名称,如果未设置该字段,则Want为隐式,如果在Want中同时指定了bundleName,moudleName和abilityName,Want可以直接匹配到指定的Ability
uristring表示携带的数据,一般配合type使用,指明待处理的数据类型,如果在Want中指定了uri,则Want将匹配指定的uri信息,包括sheme,shemeSpecificPart,authory和path信息
typestring表示携带数据类型,使用MIME类型规范,例如text/plane,image/*
actionstringaction表示调用方要执行的通用操作(如查看,分享,应用详情)。在隐式Want中,可定义该字段,配合uri和parameters来表示对数据要执行的操作,比如打开,查看该uri数据等。当uri为一段网址时,action为’ohos.want.action.viewData’时,表示匹配可查看该网址的Ability
entitiesArrayentities表示目标Ability的类别信息(浏览器,视频播放器),在隐式Want中是对action的补充。在隐式Want中,开发者可定义该字段来过滤匹配应用的类型,比如通过entity.system.browsable过滤掉非浏览器的应用
flagsnumber表示处理Want的方式,例如通过wantConstant.Flags.FLAG_ABILITY_CONTINUATION表示是否以设备间迁移方式启动Ability
parameters{[key:string]:any}用于传递参数,通过用户自定义的键值对进行数据填充,具体支持的数据类型如WantApi所示

二、显示Want启动Ability

/**
   * 使用显示Want跳转界面
   */
  async explicitStartAbility(){
      let wantInfo:Want={
        deviceId:'',
        bundleName:'com.example.project1',
        abilityName:'SecondAbility'
      }

    let context = getContext(this) as common.UIAbilityContext

    await context.startAbility(wantInfo)
  }
2.1、 Stage模型下上下文的获取
let context = getContext(this) as common.UIAbilityContext

三、隐式Want打开网页

/**
 * 使用隐式Want启动任务管理器
 */
async implicitStartAbility(){
  let wantInfo : Want ={
    "action": "ohos.want.action.viewData",
    "entities": [ "entity.system.browsable" ],
    "uri": "https://www.test.com:8080/query/student",
    "type": "text/plain"
  }

  let context = getContext(this) as common.UIAbilityContext
  context.startAbility(wantInfo)
}

官方文档地址:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/explicit-implicit-want-mappings-0000001478061453-V2

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值