From 2b08dc55d74d85f3266a4271006cdb0aafc34866 Mon Sep 17 00:00:00 2001 From: yanwenhao Date: Mon, 29 Aug 2022 20:42:22 +0800 Subject: [PATCH 1/2] add want docs Signed-off-by: yanwenhao --- ...00\345\217\221\346\214\207\345\215\227.md" | 374 ++++++++++++++++++ assets/startAbilityWtExplicitWant.PNG | Bin 0 -> 67955 bytes 2 files changed, 374 insertions(+) create mode 100644 assets/startAbilityWtExplicitWant.PNG diff --git "a/Want\345\274\200\345\217\221\346\214\207\345\215\227.md" "b/Want\345\274\200\345\217\221\346\214\207\345\215\227.md" index e69de29..3ca33db 100644 --- "a/Want\345\274\200\345\217\221\346\214\207\345\215\227.md" +++ "b/Want\345\274\200\345\217\221\346\214\207\345\215\227.md" @@ -0,0 +1,374 @@ +# Want + +## Want的简介 +### Want的定义 + +* Want是对象间传递信息的载体,包含一个请求的内容。 当A对象调用B对象时并需要传入一些数据时,Want可以作为一个数据载体将数据封装传给对象B。 + +### Want的用途 + +* Want最重要的使用场景之一便是[startAbility](#),其包含了指定的启动目标,以及启动时需携带的相关数据。如`bundleName`和`abilityName`字段分别指明目标Ability所在应用名称,以及Ability名称。 + +### Want的类型 + +* **显式Want:** + 当有明确处理请求的对象时,通过提供目标Ability所在应用名称等信息,并在Want内提供`abilityName`等必选字段便可启动目标Ability。例如,启动当前应用开发内某个已知Ability时。 + +* **隐式Want:** + 当请求处理的对象不明确时,如开发者希望在当前应用中使用其他应用提供的能力,而不关心提供该能力的具体应用,可以使用隐式Want。例如使用隐式Want描述需要打开一个链接的请求,而不关心通过具体浏览器应用打开,系统将匹配声明支持该请求的应用,当存在多个时,系统将弹出候选列表,由用户选择。**当Want未设置`abilityName`时,则为隐式**。 + +> 显式与隐式Want等更多详细信息可参考[Want匹配规则](#want匹配规则) + +## 约束与限制 + +> 由于通过隐式Want启动[Extension](#)存在安全风险,因为开发者无法确定哪些Extension将相应Want,且用户无法看到Extension的启动,因此普通应用不支持通过隐式Want启动Extension。 + + +### 属性说明 + +**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityBase + +| 名称 | 读写属性 | 类型 | 必填 | 描述 | +| ----------- | -------- | -------------------- | ---- | ------------------------------------------------------------ | +| deviceId | 只读 | string | 否 | 表示目标Ability所在设备ID。如果未设置该字段,则表明本设备。 | +| bundleName | 只读 | string | 否 | 表示目标Ability所在应用名称。如果在Want中同时指定了bundleName,moduleName和abilityName,则Want可以直接匹配到指定的Ability。 | +| abilityName | 只读 | string | 否 | 表示目标Ability名称。如果未设置该字段,则该Want为隐式。 | +| uri | 只读 | string | 否 | 表示携带的数据,一般配合type使用,指明待处理的数据类型。如果在Want中指定了Uri,则Want将匹配指定的Uri信息,包括[scheme, schemeSpecificPart, authority和path](#)信息。 | +| type | 只读 | string | 否 | 表示MIME type类型描述,携带数据类型,比如:"text/plain" 、 "image/*"等。 | +| action | 只读 | string | 否 | 表示要执行的通用操作(如:*查看、分享、应用详情*)。在隐式Want中,您可定义该字段,配合Uri来表示对数据要执行的操作,如*打开*,*查看*该Uri数据。例如,当uri为一段网址,action为`ohos.want.action.viewData`则表示匹配可**查看**该网址的Ability。更多详情可参考[wantConstant.Action](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-ability-wantConstant.md#wantconstantaction)。| +| entities | 只读 | Array\ | 否 | 表示目标Ability额外的类别信息(如:*浏览器,视频播放器*),在隐式Wan中是对action的补充。在隐式Want中,您可定义该字段,来过滤匹配Ability类别,如必须是*浏览器*。例如,在action字段的举例中,可存在多个应用声明了支持查看网址的操作,其中有应用为普通社交应用,有的为浏览器应用,您可通过`entity.system.browsable`过滤掉非浏览器的其他应用。更多详情可参考[wantConstant.Entity](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-ability-wantConstant.md#wantconstantentity)。 | +| flags | 只读 | number | 否 | 表示处理Want的方式。使用时通过[wantConstant.Flags](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-ability-wantConstant.md#wantconstantflags)获取,例如通过`wantConstant.Flags.FLAG_ABILITY_CONTINUATION`表示是否以设备间迁移方式启动Ability。 | +| parameters | 只读 | {[key: string]: any} | 否 | 表示WantParams描述,是一种自定义的数据结构,由开发者自行决定传入的键值对,来传入所需的额外信息。 | +| moduleName9+ | 只读 | string | 否 | 表示目标Ability所属的模块(module)。 | + + +## Want匹配规则 + +#### 显式Want匹配逻辑 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型匹配项是否设置规则
deviceIdstringNA可选字段,留空将仅匹配本设备内Ability。
bundleNamestring必选字段,如果指定abilityName,而不指定bundleName,则匹配失败。
moduleNamestringNA可选字段,留空时当同一个应用内存在多个模块且模块间存在重名Ability,将默认匹配第一个。
abilityNamestring必选字段。
uristringNA系统匹配时将忽略该参数,但仍可作为参数传递给目标Ability。
typestringNA
actionstringNA
entitiesArray<string>NA
flagsnumberNA不参与匹配,直接传递给系统处理,一般用来设置运行态信息,比如URI数据授权等。
parameters{[key: string]: any}NA不参与匹配,应用自定义数据将直接传递给目标Ability。
+ +#### 隐式Want匹配逻辑 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型匹配项是否设置规则
deviceIdstringNA跨设备目前不支持隐式调用。
abilityNamestringNA 该字段必须留空表示隐式匹配。
bundleNamestringNA 这些字段将用来隐式匹配,系统将匹配出所有支持对的uri进行action操作的应用,并仅保留属于entities内应用类别的应用。 详情可参考 隐式Want匹配原理详解。
moduleNamestringNA
uristringNA
typestringNA
actionstringNA
entitiesArray<string>NA
flagsnumberNA不参与匹配,直接传递给系统处理,一般用来设置运行态信息,比如URI数据授权等。
parameters{[key: string]: any}NA不参与匹配,应用自定义数据将直接传递给目标Ability。
+ +#### 隐式Want匹配原理详解 + +从[隐式Want的定义](#want的类型),可得知: +* 调用方需要表明自己执行的操作,并提供相关数据以及其他应用类型限制。 +* 其他应用需要声明自己具备的能力([skills字段](#))。 + +系统将调用应用传入的Want(包含action,entities,uri和type属性)与其他应用的skills(包含action,entities和uris属性)进行匹配。**当以下四个属性匹配均通过**,则此应用才会被应用选择器展示给用户进行选择。 + +##### action匹配规则: +将其他应用skills信息中的`actions`与调用方want内的`action`进行匹配。 +* 如果skills信息中的actions为空,则匹配失败。 +* 如果skills信息中的actions不为空,且其包含want信息中的action(*可以为空*),匹配成功;否则匹配失败。 + +##### entities匹配规则: +将其他应用skills信息中的`entities`与调用方want内的`entities`进行匹配。 +* 如果skills信息中的entities为空,则只有当want信息中的entities为空时才匹配通过;否则匹配失败。 +* 如果skills信息中的entities不为空,且其包含want信息中**全部**entities(*可以为空*),匹配成功;否则匹配失败。 + +##### uri匹配规则: +将其他应用skills信息的`uris`中`scheme`,`host`,`port`,`path`,`pathStartWith`和`pathRegex`属性拼接成`uri(scheme://host:port/(path;pathStartWith;pathRegex))`, 将此uri与调用方应用的want信息中的uri进行匹配。其中`path`为*完全路径匹配*,`pathStartWith`为*前缀匹配*,`pathRegex`为*正则匹配*。当存在多个路径声明时,仅一个路径匹配被使用,匹配的优先级为:*完全路径匹配* > *前缀匹配* > *正则匹配*。 + +* 如果skills信息拼接成的uri为空,则只有当want中的uri也为空时才匹配成功;否则匹配失败。 +* 如果skills信息拼接成的uri不为空,且其涵盖want信息中的uri(*不可以为空*),则匹配成功;否则匹配失败。 + +##### type匹配规则: +将其他应用skills信息中`uris`中的`type`与调用方的want中的`type`进行匹配,支持`*`通配符匹配。 + +* 如果skills信息中的type为空,则只有当want信息中的type同样为空时才匹配成功;否则匹配失败。 +* 如果skills信息中的type不为空,其包含want信息中的type(*不可以为空*),则匹配成功;否则匹配失败。 +> 注意:因为`type`是skill信息中`uris`的成员字段,因此需配合uri匹配规则。 + + +## 相关用例 + +### Stage模型下通过按钮使用显式Want启动本应用一个Ability + +* 在应用使用场景中,当用户点击某个按钮时,应用拉起特定组件即Ability来完成某些特定任务是一个非常常见的操作,在本用例中,您将通过显式Want拉起应用内一个指定Ability的操作。注意:*该用例内不存在模块间重名Ability,当您的开发存在此情况,请确保补充want内`moduleName`字段。* + +#### 前提条件 + +1. Stage模型工程内,创建`callerAbility`,与一个页面, 并在`callerAbility`文件内的[onWindowStageCreate](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-application-abilityLifecycleCallback.md#abilitylifecyclecallbackonwindowstageactive)内通过`windowStage.setUIContent`方法将两者绑定。 + ```js + // callerAbility.ts + onWindowStageCreate(windowStage) { + // Main window is created, set main page for this ability + console.log("[Demo] MainAbility onWindowStageCreate") + // Bind callerAbility with a paged named index + windowStage.setUIContent(this.context, "pages/index", null) + } + ``` +2. 同上方法创建`calleeAbility`,与页面,并将其关联。 + +#### 实现 {#Stage模型下通过按钮使用显式Want启动本应用一个Ability实现} + +1. 在`index`页面内新增一个按钮。 + ```js + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + // A new button with will call explicitStartAbility() when clicked. + Button("CLICKME") + .onClick(explicitStartAbility) + .... + ``` + +2. 补充相对应的onClick方法,并使用显式Want在方法内启动`calleeAbility`。在Stage模型下,`bundleName`字段可在工程`AppScope>app.json5`文件内获取;`abilityName`可在对应模块内的`yourModuleName>src>main>module.json5`文件查看。 + ```js + async function explicitStartAbility() { + try { + // Explicit want with abilityName specified. + let want = { + deviceId: "", + bundleName: "com.example.wantdemo", + abilityName: "calleeAbility" + } + await globalThis.context.startAbility(want) + console.info(`explicit start ability succeed`) + } catch (error) { + console.info(`explicit start ability failed with ${error.code}`) + } + } + ``` + > 注意:在Stage模型下,[startAbility](#)为[Ability.context](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-ability-context.md)(上下文)的成员函数, 因此当在对应页面内使用startAbility时,需借助`globalThis`获取对应context。 + +3. 在callerAbility的`onCreate`生命周期函数内设定`globalThis.context`。 + ```js + // callerAbility.ts + onCreate(want, launchParam) { + console.log("[Demo] MainAbility onCreate") + globalThis.abilityWant = want; + globalThis.context = this.context; + } + ``` + +4. 至此,当您点击`CLICKME`按钮时,应看到页面的跳转。 +![startAbilityWithExplicitWant](./assets/startAbilityWtExplicitWant.PNG) + +### FA模型下通过按钮使用显式Want启动本应用一个Ability + +#### 前提条件 + +1. 创建`callerAbility`与`calleeAbility`, 在FA模型下,您无需关注页面的创建和页面与Ability的绑定,工程将自动为您完成。因此Stage模型下的页面绑定,在FA模型下可忽略。 + +2. FA模型下startAbility为[featureAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-featureAbility.md)的成员函数, 因此您同样无需关注上文Stage模型下提及的`globalThis.context`。 + +#### 实现 + +1. 导入模块 + ```js + import featureAbility from '@ohos.ability.featureAbility' + ``` + +2. 与Stage模型下[实现.1](#Stage模型下通过按钮使用显式Want启动本应用一个Ability实现)相同,添加按钮。 + +3. 补充相对应的onClick方法,并使用显式Want在方法内启动`calleeAbility`。在FA模型下,`bundleName`字段可在对应模块文件夹下`yourModuleName>src>main>config.json`文件内获取;同文件下,我们可以找到对应`abilityName`,以及`abilityName`所在`module`字段下的`packageName`。 + > 在FA模型下,显式Want内的`abilityName`字段为`packageName` + `abilityName`。如当config.json内如下时,want内`abilityName`字段仅填写`.PageAbility`将报错。正确的是`com.example.entry.PageAbility`。注意:*packageName并不一定与bundleName相同。* + ```json + "module": { + "mainAbility": ".MainAbility", + "deviceType": [ + "phone", + "tablet" + ], + "abilities": [ + { + "orientation": "unspecified", + "srcPath": "PageAbility", + // abilityName + "name": ".PageAbility", + "srcLanguage": "ets", + ... + }, + ], + ..., + // packageName + "package": "com.example.entry", + ... + } + ``` + 实现`explicitStartAbility`方法。 + ```js + async function explicitStartAbility() { + try { + // Explicit want with abilityName specified. + let param = { + want: { + deviceId: "", + bundleName: "com.example.wantdemo", + // packName doesn't have to be the same as bundleName. + abilityName: "com.example.entry.calleeAbility" + } + } + await featureAbility.startAbility(param) + console.info(`explicit start ability succeed`) + } catch (error) { + console.info(`explicit start ability failed with ${error.code}`) + } + } + ``` + +### Stage模型下使用隐式调用打开网址。 + diff --git a/assets/startAbilityWtExplicitWant.PNG b/assets/startAbilityWtExplicitWant.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1d9e25f148d08a58a0ac45b703e08072f52fc300 GIT binary patch literal 67955 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 literal 0 HcmV?d00001 -- Gitee From cf889f468cd7a1f05490214614d95b32949ddc81 Mon Sep 17 00:00:00 2001 From: yanwenhao Date: Mon, 17 Oct 2022 15:20:38 +0800 Subject: [PATCH 2/2] Refined contents Signed-off-by: yanwenhao --- ...00\345\217\221\346\214\207\345\215\227.md" | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git "a/Want\345\274\200\345\217\221\346\214\207\345\215\227.md" "b/Want\345\274\200\345\217\221\346\214\207\345\215\227.md" index 3ca33db..3ee6e7a 100644 --- "a/Want\345\274\200\345\217\221\346\214\207\345\215\227.md" +++ "b/Want\345\274\200\345\217\221\346\214\207\345\215\227.md" @@ -3,21 +3,21 @@ ## Want的简介 ### Want的定义 -* Want是对象间传递信息的载体,包含一个请求的内容。 当A对象调用B对象时并需要传入一些数据时,Want可以作为一个数据载体将数据封装传给对象B。 +* Want是对象间传递信息的载体,包含一个请求的内容。 Want最常见使用场景便是用于[Ability](#)间的信息传递。当Ability(A)启动Ability(B)并需要传入一些数据给Ability(B)时,Want可以作为一个数据载体将数据封装传给Ability(B)。Want内含有自定义参数字段,因此Want同样可在需要传递数据信息时使用,如作为函数传参的数据结构体。 ### Want的用途 -* Want最重要的使用场景之一便是[startAbility](#),其包含了指定的启动目标,以及启动时需携带的相关数据。如`bundleName`和`abilityName`字段分别指明目标Ability所在应用名称,以及Ability名称。 +* Want最重要的使用场景之一便是[startAbility](#),其包含了指定的启动目标,以及启动时需携带的相关数据。如`bundleName`和`abilityName`字段分别指明目标Ability所在应用的**包名**,以及对应包内Ability名称。 ### Want的类型 * **显式Want:** - 当有明确处理请求的对象时,通过提供目标Ability所在应用名称等信息,并在Want内提供`abilityName`等必选字段便可启动目标Ability。例如,启动当前应用开发内某个已知Ability时。 + **指定`abilityName`和`bundleName`的Want称为显式Want**。当有明确处理请求的对象时,通过提供目标Ability所在应用的包名信息,并在Want内提供`abilityName`便可启动目标Ability。显式Want通常在启动当前应用开发中某个已知Ability时被用到。 * **隐式Want:** - 当请求处理的对象不明确时,如开发者希望在当前应用中使用其他应用提供的能力,而不关心提供该能力的具体应用,可以使用隐式Want。例如使用隐式Want描述需要打开一个链接的请求,而不关心通过具体浏览器应用打开,系统将匹配声明支持该请求的应用,当存在多个时,系统将弹出候选列表,由用户选择。**当Want未设置`abilityName`时,则为隐式**。 + **当Want未设置`abilityName`时,则为隐式**。当请求处理的对象不明确时,如开发者希望在当前应用中使用其他应用提供的能力,而不关心提供该能力的具体应用,可以使用隐式Want。例如使用隐式Want描述需要打开一个链接的请求,而不关心通过具体哪个应用打开,系统将匹配声明支持该请求的所有应用,当未匹配到时支持的应用时,系统将提示;当存在一个时,系统将自动拉起对应应用;当存在多个时,系统将弹出候选列表,由用户选择。 -> 显式与隐式Want等更多详细信息可参考[Want匹配规则](#want匹配规则) +> 显式与隐式Want等更多详细信息可参考[Want匹配规则](#want匹配规则)。 ## 约束与限制 @@ -34,13 +34,14 @@ | bundleName | 只读 | string | 否 | 表示目标Ability所在应用名称。如果在Want中同时指定了bundleName,moduleName和abilityName,则Want可以直接匹配到指定的Ability。 | | abilityName | 只读 | string | 否 | 表示目标Ability名称。如果未设置该字段,则该Want为隐式。 | | uri | 只读 | string | 否 | 表示携带的数据,一般配合type使用,指明待处理的数据类型。如果在Want中指定了Uri,则Want将匹配指定的Uri信息,包括[scheme, schemeSpecificPart, authority和path](#)信息。 | -| type | 只读 | string | 否 | 表示MIME type类型描述,携带数据类型,比如:"text/plain" 、 "image/*"等。 | +| type | 只读 | string | 否 | 表示携带数据类型,使用[MIME类型](#)规范。比如:"text/plain" 、 "image/*"等。 | | action | 只读 | string | 否 | 表示要执行的通用操作(如:*查看、分享、应用详情*)。在隐式Want中,您可定义该字段,配合Uri来表示对数据要执行的操作,如*打开*,*查看*该Uri数据。例如,当uri为一段网址,action为`ohos.want.action.viewData`则表示匹配可**查看**该网址的Ability。更多详情可参考[wantConstant.Action](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-ability-wantConstant.md#wantconstantaction)。| | entities | 只读 | Array\ | 否 | 表示目标Ability额外的类别信息(如:*浏览器,视频播放器*),在隐式Wan中是对action的补充。在隐式Want中,您可定义该字段,来过滤匹配Ability类别,如必须是*浏览器*。例如,在action字段的举例中,可存在多个应用声明了支持查看网址的操作,其中有应用为普通社交应用,有的为浏览器应用,您可通过`entity.system.browsable`过滤掉非浏览器的其他应用。更多详情可参考[wantConstant.Entity](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-ability-wantConstant.md#wantconstantentity)。 | | flags | 只读 | number | 否 | 表示处理Want的方式。使用时通过[wantConstant.Flags](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-ability-wantConstant.md#wantconstantflags)获取,例如通过`wantConstant.Flags.FLAG_ABILITY_CONTINUATION`表示是否以设备间迁移方式启动Ability。 | | parameters | 只读 | {[key: string]: any} | 否 | 表示WantParams描述,是一种自定义的数据结构,由开发者自行决定传入的键值对,来传入所需的额外信息。 | | moduleName9+ | 只读 | string | 否 | 表示目标Ability所属的模块(module)。 | +以上属性中,`entities,action,uri,type`四个属性主要用于[隐式Want](#want的类型),这些属性通俗的讲定义了**支持对数据类型为`type`的数据`uri`执行`action`操作,且类型为`entities`的Ability**。因以上属性均不是必选参数,每个单独匹配规则可参考[隐式Want匹配原理详解](#隐式want匹配原理详解)。 ## Want匹配规则 @@ -218,7 +219,7 @@ ##### action匹配规则: 将其他应用skills信息中的`actions`与调用方want内的`action`进行匹配。 * 如果skills信息中的actions为空,则匹配失败。 -* 如果skills信息中的actions不为空,且其包含want信息中的action(*可以为空*),匹配成功;否则匹配失败。 +* 如果skills信息中的actions不为空,且其包含want信息中的action(*不可以为空*),匹配成功;否则匹配失败。 ##### entities匹配规则: 将其他应用skills信息中的`entities`与调用方want内的`entities`进行匹配。 @@ -358,7 +359,7 @@ want: { deviceId: "", bundleName: "com.example.wantdemo", - // packName doesn't have to be the same as bundleName. + // packageName doesn't have to be the same as bundleName. abilityName: "com.example.entry.calleeAbility" } } @@ -368,7 +369,4 @@ console.info(`explicit start ability failed with ${error.code}`) } } - ``` - -### Stage模型下使用隐式调用打开网址。 - + ``` \ No newline at end of file -- Gitee