HarmonyOS/OpenHarmony应用开发-信息传递载体Want使用
Want 定义与用途
Want是对象间信息传递的载体,可以用于应用组件间的信息传递。
Want的使用场景之一是作为startAbility的参数,其包含了指定的启动目标,以及启动时需携带的相关数据,如bundleName和abilityName字段分别指明目标Ability所在应用的包名以及对应包内的Ability名称。当AbilityA启动AbilityB并需要传入一些数据给AbilityB时,Want可以作为一个数据载体将数据传给AbilityB。
Want用法如下图:
Want 类型
显式Want: 在启动Ability时指定了abilityName和bundleName的Want称为显式Want。
当有明确处理请求的对象时,通过提供目标Ability所在应用的包名信息(bundleName),并在Want内指定abilityName便可启动目标Ability。显式Want通常在启动当前应用开发中某个已知Ability时被用到。
let want = {
deviceId: '',
bundleName: 'com.example.myapplication',
abilityName: 'calleeAbility',
};
隐式Want:在启动Ability时未指定abilityName的Want称为隐式Want。
当请求处理的对象不明确时,如开发者希望在当前应用中使用其他应用提供的某个能力(通过skills定义),而不关心提供该能力的具体应用,可以使用隐式Want。
let want = {
// bundleName: 'com.example.myapplication',
entities: [ 'entity.system.browsable' ],
uri: '',
type: 'text/plain',
};
调用方传入的want参数中不带有abilityName和bundleName,则不允许通过隐式Want启动所有应用的ServiceExtensionAbility。
调用方传入的want参数中带有bundleName,则允许使用startServiceExtensionAbility()方法隐式Want启动ServiceExtensionAbility。
Want参数属性说明:
文档地址:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/want-overview-0000001385696462-V3?catalogVersion=V3