鸿蒙开发:信息传递载体Want

电子说

1.2w人已加入

描述

Want概述

Want的定义与用途

[Want]是一种对象,用于在应用组件之间传递信息。

其中,一种常见的使用场景是作为[startAbility()]方法的参数。例如,当UIAbilityA需要启动UIAbilityB并向UIAbilityB传递一些数据时,可以使用Want作为一个载体,将数据传递给UIAbilityB。

图1 Want用法示意
鸿蒙

Want的类型

  • 显式Want :在启动目标应用组件时,调用方传入的want参数中指定了abilityName和bundleName,称为显式Want。
    显式Want通常用于应用内组件启动,通过在Want对象内指定本应用Bundle名称信息(bundleName)和abilityName来启动应用内目标组件。当有明确处理请求的对象时,显式Want是一种简单有效的启动目标应用组件的方式。

    说明:

    API 11及以前版本,支持使用显式want拉起其他应用的UIAbility。 从API 12开始,不再支持使用显式Want进行应用间跳转,需要通过openLink接口拉起其他应用。

    import { Want } from '@kit.AbilityKit';
    
    let wantInfo: Want = {
      deviceId: '', // deviceId为空表示本设备
      bundleName: 'com.example.myapplication',
      abilityName: 'FuncAbility',
    }
    
  • 隐式Want :在启动目标应用组件时,调用方传入的want参数中未指定abilityName,称为隐式Want。
    当需要处理的对象不明确时,可以使用隐式Want,在当前应用中使用其他应用提供的某个能力,而不关心提供该能力的具体应用。隐式Want使用[skills标签]来定义需要使用的能力,并由系统匹配声明支持该请求的所有应用来处理请求。例如,需要打开一个链接的请求,系统将匹配所有声明支持该请求的应用,然后让用户选择使用哪个应用打开链接。

    import { Want } from '@kit.AbilityKit';
    
    let wantInfo: Want = {
      // uncomment line below if wish to implicitly query only in the specific bundle.
      // bundleName: 'com.example.myapplication',
      action: 'ohos.want.action.search',
      // entities can be omitted
      entities: [ 'entity.system.browsable' ],
      uri: 'https://www.test.com:8080/query/student',
      type: 'text/plain',
    };
    

    鸿蒙

    说明:
    开发前请熟悉鸿蒙开发指导文档 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

    • 根据系统中待匹配应用组件的匹配情况不同,使用隐式Want启动应用组件时会出现以下三种情况。
      • 未匹配到满足条件的应用组件:启动失败。
      • 匹配到一个满足条件的应用组件:直接启动该应用组件。
      • 匹配到多个满足条件的应用组件(UIAbility):弹出选择框让用户选择。
    • 对于启动ServiceExtensionAbility的场景:
      • 调用方传入的want参数中带有abilityName,则不允许通过隐式Want启动ServiceExtensionAbility。
      • 调用方传入的want参数中带有bundleName,则允许使用startServiceExtensionAbility()方法隐式Want启动ServiceExtensionAbility,默认返回优先级最高的ServiceExtensionAbility,如果优先级相同,返回第一个。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分