华为鸿蒙 Want:应用组件之间信息传递的桥梁
踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398?ha_source=hmosclass-itzhijia&ha_sourceId=89000249
本文旨在深入探讨华为鸿蒙 HarmonyOS NEXT 系统(截至目前 API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。
在华为鸿蒙系统中,应用组件之间的信息传递是通过 Want 对象实现的。Want 对象可以携带各种信息,例如目标组件的名称、参数、数据等,从而实现应用组件之间的通信和协作。
一、Want 的定义和作用Want 是一个对象,用于在应用组件之间传递信息。它可以携带各种信息,例如目标组件的名称、参数、数据等,从而实现应用组件之间的通信和协作。
以下是一个 Want 对象的示例:
开发者可以根据应用需求使用不同的 Want 参数属性,实现应用组件之间的信息传递和通信。
二、显式 Want 与隐式 Want 的区别显式 Want 和隐式 Want 是两种不同的 Want 对象,它们的主要区别在于目标组件的指定方式。
显式 Want:在启动组件时,显式 Want 对象会指定目标组件的名称和包名,例如 wantInfo = {deviceId: '', bundleName: 'com.example.myapplication', abilityName: 'FuncAbility'}。
隐式 Want:在启动组件时,隐式 Want 对象不会指定目标组件的名称,而是通过 action、entities、uri、type 等信息进行匹配,例如 wantInfo = {action: 'ohos.want.action.search', entities: ['entity.system.browsable'], uri: 'https://www.test.com:8080 / query / student', type: 'text / plain' }。
显式 Want 和隐式 Want 的选择取决于应用的需求。如果知道目标组件的名称和包名,则使用显式 Want;如果目标组件不明确,则需要使用隐式 Want。
三、显式 Want 的匹配规则显式 Want 的匹配规则是根据 Want 对象中的信息与目标组件的配置进行匹配,只有匹配成功的组件才会被启动。
以下是一个显式 Want 匹配的示例:
显式 Want 的匹配规则:
1.bundleName 匹配:首先匹配 Want 对象中的 bundleName 与目标组件配置中的 bundleName 是否一致。
2.abilityName 匹配:如果 bundleName 匹配成功,则匹配 Want 对象中的 abilityName 与目标组件配置中的 abilityName 是否一致。
3.parameters 匹配:如果 abilityName 匹配成功,则匹配 Want 对象中的 parameters 与目标组件配置中的 parameters 是否一致。只有当所有匹配规则都满足时,显式 Want 才会匹配成功,并启动目标组件。
四、隐式 Want 的匹配规则隐式 Want 的匹配规则是通过 action、entities、uri、type 等信息进行匹配,匹配成功的组件数量决定了隐式 Want 的处理方式。
以下是一个隐式 Want 匹配的示例:
隐式 Want 的匹配规则:
1.linkFeature 匹配:首先匹配 Want 对象中的 linkFeature 与目标组件配置中的 linkFeature 是否一致。
2.uri 和 type 匹配:如果 linkFeature 匹配成功,则匹配 Want 对象中的 uri 和 type 与目标组件配置中的 uris 数组中的 uri 和 type 是否一致。
3.action 和 entities 匹配:如果 uri 和 type 匹配成功,则匹配 Want 对象中的 action 和 entities 与目标组件配置中的 actions 和 entities 是否一致。隐式 Want 的匹配结果有以下几种情况:
匹配失败:如果所有匹配规则都失败,则隐式 Want 匹配失败,无法启动目标组件。
匹配成功,单个组件:如果匹配成功,并且只有一个目标组件满足条件,则直接启动该目标组件。
匹配成功,多个组件:如果匹配成功,并且有多个目标组件满足条件,则弹出选择框让用户选择要启动的组件。
隐式 Want 的匹配规则相对复杂,开发者需要根据应用的需求选择合适的匹配规则,并确保配置文件中的信息准确无误。
五、Want 参数的属性说明Want 对象包含多个属性,每个属性都用于传递不同的信息。以下是一些常用的 Want 参数属性:
deviceId:目标设备的 ID,如果为空,则表示本设备。
bundleName:目标组件的包名。
moduleName:目标组件所在的模块名,如果为空,则表示默认模块。
abilityName:目标组件的名称。
uri:目标组件的 URI,用于匹配具有特定 URI 的组件。
type:目标组件的 MIME 类型,用于匹配具有特定 MIME 类型的组件。
action:目标组件的动作,用于匹配具有特定动作的组件。
entities:目标组件的实体,用于匹配具有特定实体的组件。
parameters:目标组件的参数,用于传递自定义信息。
咱们可以根据应用需求使用不同的 Want 参数属性,实现应用组件之间的信息传递和通信。
本篇博客介绍了华为鸿蒙 Want 的定义、作用、显式 Want 和隐式 Want 的区别、匹配规则以及 Want 参数的属性说明。后续文章将深入讲解 Want 对象的具体使用方法和开发技巧。
请注意,由于鸿蒙系统版本更新较快,部分功能可能存在变动,请以最新版本官方文档为准。(文章转载自 51CTO,作者 SameX)