From 2df1aa80a08e556690b5374c52cf6ee03638e0c1 Mon Sep 17 00:00:00 2001 From: zyjhandsome Date: Thu, 6 Apr 2023 06:39:45 +0000 Subject: [PATCH] update zh-cn/application-dev/application-models/ability-startup-with-implicit-want.md. Signed-off-by: zyjhandsome --- .../ability-startup-with-implicit-want.md | 124 +++++++++--------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/zh-cn/application-dev/application-models/ability-startup-with-implicit-want.md b/zh-cn/application-dev/application-models/ability-startup-with-implicit-want.md index e8c032c096..131e45242c 100644 --- a/zh-cn/application-dev/application-models/ability-startup-with-implicit-want.md +++ b/zh-cn/application-dev/application-models/ability-startup-with-implicit-want.md @@ -1,77 +1,77 @@ # 使用隐式Want打开网址 - -## 前提条件 - -设备上安装了一个或多个浏览器。 - -浏览器应用中通过module.json5配置如下: +以打开浏览器为例,假设设备上安装了一个或多个浏览器应用。为了使浏览器应用能够正常工作,需要在[module.json5配置文件](../quick-start/module-configuration-file.md)进行配置,具体配置如下: ```json -"skills": [ - { - "entities": [ - "entity.system.browsable" - // ... - ], - "actions": [ - "ohos.want.action.viewData" - // ... - ], - "uris": [ - { - "scheme": "https", - "host": "www.test.com", - "port": "8080", - // prefix matching - "pathStartWith": "query", - "type": "text/*" - }, +{ + "module": { + // ... + "abilities": [ { - "scheme": "http", // ... + "skills": [ + { + "entities": [ + "entity.system.home", + "entity.system.browsable" + // ... + ], + "actions": [ + "action.system.home", + "ohos.want.action.viewData" + // ... + ], + "uris": [ + { + "scheme": "https", + "host": "www.test.com", + "port": "8080", + // prefix matching + "pathStartWith": "query" + }, + { + "scheme": "http", + // ... + } + // ... + ] + } + ] } - // ... ] - }, -] + } +} ``` +在调用方UIAbility中,使用隐式Want方式启动浏览器应用。 -## 开发步骤 +```ts +import common from '@ohos.app.ability.common'; -1. 在自定义函数implicitStartAbility内使用**隐式Want**启动Ability。 - - ```ts - async implicitStartAbility() { - try { - let want = { - // uncomment line below if wish to implicitly query only in the specific bundle. - // bundleName: "com.example.myapplication", - "action": "ohos.want.action.viewData", - // entities can be omitted. - "entities": [ "entity.system.browsable" ], - "uri": "https://www.test.com:8080/query/student", - "type": "text/plain" - } - let context = getContext(this) as common.UIAbilityContext; - await context.startAbility(want) - console.info(`explicit start ability succeed`) - } catch (error) { - console.info(`explicit start ability failed with ${error.code}`) - } - } - ``` +function implicitStartAbility() { + let context = getContext(this) as common.UIAbilityContext; + let wantInfo = { + // uncomment line below if wish to implicitly query only in the specific bundle. + // bundleName: 'com.example.myapplication', + 'action': 'ohos.want.action.viewData', + // entities can be omitted. + 'entities': ['entity.system.browsable'], + 'uri': 'https://www.test.com:8080/query/student' + } + context.startAbility(wantInfo).then(() => { + // ... + }).catch((err) => { + // ... + }) +} +``` - 匹配过程如下: - 1. want内action不为空,且被skills内action包括,匹配成功。 - - 2. want内entities不为空,且被skills内entities包括,匹配成功。 - - 3. skills内uris拼接为https://www.test.com:8080/query\* (\*为通配符)包含want内uri,匹配成功。 - - 4. want内type不为空,且被skills内type包含,匹配成功。 +匹配过程分析: -2. 当有多个匹配应用时,会被应用选择器展示给用户进行选择。 +1. 调用方传入的want参数的action不为空,待匹配Ability的skills配置中的actions不为空且包含调用方传入的want参数的action,action匹配成功。 +2. 调用方传入的want参数的entities不为空,待匹配Ability的skills配置中的entities不为空且包含调用方传入的want参数的entities,entities匹配成功。 +3. 待匹配Ability的skills配置中内uris拼接为`https://www.test.com:8080/query*` (其中*表示通配符),包含调用方传入的want参数的uri,uri匹配成功。 +4. 调用方传入的want参数的type不为空,待匹配Ability的skills配置中的type不为空且包含调用方传入的want参数的type,type匹配成功。 - ![stage-want1](figures/stage-want1.png) +当存在多个匹配的应用时,系统将弹出应用选择框供用户选择。示意效果如下图所示。 +![stage-want1](figures/stage-want1.png) -- GitLab