From 650c84b331e4577817f2c69f7606260d4115e6dc Mon Sep 17 00:00:00 2001 From: Gloria Date: Tue, 11 Apr 2023 14:16:24 +0800 Subject: [PATCH] Update docs against 16982+16904+16903+16912+16809+16724+16802 Signed-off-by: wusongqing --- .../application-models/Readme-EN.md | 1 - .../ability-startup-with-explicit-want.md | 72 +---- .../ability-startup-with-implicit-want.md | 123 ++++---- .../application-context-stage.md | 288 ++++++++++-------- .../component-startup-rules.md | 2 +- .../application-models/create-pageability.md | 26 +- .../application-models/data-share-via-want.md | 224 ++++++++------ .../explicit-implicit-want-mappings.md | 57 ++-- .../figures/want-uri-type1.png | Bin 57004 -> 124101 bytes .../hop-cross-device-migration.md | 2 +- .../hop-multi-device-collaboration.md | 54 ++-- .../mission-management-overview.md | 4 +- .../uiability-intra-device-interaction.md | 141 ++++----- .../uiability-launch-type.md | 20 +- 14 files changed, 500 insertions(+), 514 deletions(-) diff --git a/en/application-dev/application-models/Readme-EN.md b/en/application-dev/application-models/Readme-EN.md index d2bca637ca..2d70222630 100644 --- a/en/application-dev/application-models/Readme-EN.md +++ b/en/application-dev/application-models/Readme-EN.md @@ -18,7 +18,6 @@ - [ExtensionAbility Component Overview](extensionability-overview.md) - [ServiceExtensionAbility](serviceextensionability.md) - [DataShareExtensionAbility (for System Applications Only)](datashareextensionability.md) - - [FormExtensionAbility (Widget)](widget-development-stage.md) - [AccessibilityExtensionAbility](accessibilityextensionability.md) - [EnterpriseAdminExtensionAbility](enterprise-extensionAbility.md) - [InputMethodExtensionAbility](inputmethodextentionability.md) diff --git a/en/application-dev/application-models/ability-startup-with-explicit-want.md b/en/application-dev/application-models/ability-startup-with-explicit-want.md index cb4642d108..80b96ce801 100644 --- a/en/application-dev/application-models/ability-startup-with-explicit-want.md +++ b/en/application-dev/application-models/ability-startup-with-explicit-want.md @@ -1,73 +1,5 @@ # Using Explicit Want to Start an Ability +When a user touches a button in an application, the application often needs to start a UIAbility component to complete a specific task. If the **abilityName** and **bundleName** parameters are specified when starting a UIAbility, then the explicit Want is used. Using Explicit Want -When a user touches a button in an application, the application often needs to start a UIAbility component to complete a specific task. The following describes how to use explicit Want to start a UIAbility component in an application. - - -## How to Develop - -1. In a project of the stage model, create an ability and a page, named **callerAbility** and **Index.ets**, respectively. Use the **windowStage.loadContent()** method in the **onWindowStageCreate** function in the **callerAbility.ts** file to bind the two. - - ```ts - // ... - // callerAbility.ts - onWindowStageCreate(windowStage) { - // Main window is created, set main page for this ability - console.info('[Demo] EntryAbility onWindowStageCreate') - // Bind callerAbility with a paged named Index - windowStage.loadContent('pages/Index') - } - // ... - ``` - -2. Repeat the preceding operation to create another ability named **calleeAbility**. - -3. Add a button to the **Index.ets** page of **callerAbility**. - - ```ts - // ... - build() { - Row() { - Column() { - Text('hello') - .fontSize(50) - .fontWeight(FontWeight.Bold) - // A new button with will call explicitStartAbility() when clicked. - Button("CLICKME") - .onClick(this.explicitStartAbility) // For details about explicitStartAbility, see the sample code below. - // ... - } - .width('100%') - } - .height('100%') - } - // ... - ``` - -4. Override the **onClick** method and use explicit Want to start **calleeAbility** in the method. The **bundleName** field can be obtained from the **AppScope > app.json5** file of the project. The **abilityName** field can be obtained from the **yourModuleName > src > main > module.json5** file of the corresponding module. - - ```ts - import common from '@ohos.app.ability.common'; - - // ... - async explicitStartAbility() { - try { - // Explicit want with abilityName specified. - let want = { - deviceId: "", - bundleName: "com.example.myapplication", - abilityName: "calleeAbility" - }; - 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}`); - } - } - // ... - ``` - -5. When you touch **CLICKME**, the corresponding page is displayed. - - startAbilityWtExplicitWant +The user touches a button in the application to start the UIAbility component to complete a specific task. To start the UIAbility component in explicit Want mode, the **abilityName** and **bundleName** parameters must be specified. For details, see [Starting UIAbility in the Same Application](uiability-intra-device-interaction.md#starting-uiability-in-the-same-application). diff --git a/en/application-dev/application-models/ability-startup-with-implicit-want.md b/en/application-dev/application-models/ability-startup-with-implicit-want.md index 6550e5c628..e3c94b2963 100644 --- a/en/application-dev/application-models/ability-startup-with-implicit-want.md +++ b/en/application-dev/application-models/ability-startup-with-implicit-want.md @@ -1,77 +1,78 @@ # Using Implicit Want to Open a Website - -## Prerequisites - -One or more browsers are installed on your device. - -The **module.json5** of a browser application is as follows: +This section uses the operation of using a browser to open a website as an example. It is assumed that one or more browser applications are installed on the device. To ensure that the browser application can work properly, configure the [module.json5 file](../quick-start/module-configuration-file.md) as follows: ```json -"skills": [ - { - "entities": [ - "entity.system.browsable" - // ... - ], - "actions": [ - "ohos.want.action.viewData" - // ... - ], - "uris": [ - { - "scheme": "https", - "host": "www.test.com", - "port": "8080", - // Prefix matching is used. - "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 is used. + "pathStartWith": "query" + }, + { + "scheme": "http", + // ... + } + // ... + ] + } + ] } - // ... ] - }, -] + } +} ``` +In the initiator UIAbility, use implicit Want to start the browser application. -## How to Develop +```ts +import common from '@ohos.app.ability.common'; -1. Use the custom function **implicitStartAbility** to start an ability. - - ```ts - async implicitStartAbility() { - try { - let want = { - // Uncomment the line below if you want to implicitly query data 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}`) - } - } - ``` - - The matching process is as follows: - 1. If **action** in the passed **want** parameter is specified and is included in **actions** under **skills**, the matching is successful. - - 2. If **entities** in the passed **want** parameter is specified and is included in **entities** under **skills**, the matching is successful. +function implicitStartAbility() { + let context = getContext(this) as common.UIAbilityContext; + let wantInfo = { + // Uncomment the line below if you want to implicitly query data 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) => { + // ... + }) +} +``` - 3. If **uri** in the passed **want** parameter is included in **uris** under **skills**, which is concatenated into `https://www.test.com:8080/query*` (where \* is a wildcard), the matching is successful. +The matching process is as follows: - 4. If **type** in the passed **want** parameter is specified and is included in **type** under **skills**, the matching is successful. +1. If **action** in the passed **want** parameter is specified and is included in **actions** under **skills** of the ability to match, the matching is successful. +2. If **entities** in the passed **want** parameter is specified and is included in **entities** under **skills** of the ability to match, the matching is successful. +3. If **uri** in the passed **want** parameter is included in **uris** under **skills** of the ability to match, which is concatenated into https://www.test.com:8080/query* (where * is a wildcard), the matching is successful. +4. If **type** in the passed **want** parameter is specified and is included in **type** under **skills** of the ability to match, the matching is successful. -2. When there are multiple matching applications, a dialog box is displayed for you to select one of them. +If there are multiple matching applications, the system displays a dialog box for you to select one of them. The following figure shows an example. - ![stage-want1](figures/stage-want1.png) +![stage-want1](figures/stage-want1.png) diff --git a/en/application-dev/application-models/application-context-stage.md b/en/application-dev/application-models/application-context-stage.md index 23bd8d29ec..aa40d3aedf 100644 --- a/en/application-dev/application-models/application-context-stage.md +++ b/en/application-dev/application-models/application-context-stage.md @@ -6,56 +6,60 @@ [Context](../reference/apis/js-apis-inner-application-context.md) is the context of an object in an application. It provides basic information about the application, for example, **resourceManager**, **applicationInfo**, **dir** (application development path), and **area** (encrypted area). It also provides basic methods such as **createBundleContext()** and **getApplicationContext()**. The UIAbility component and ExtensionAbility derived class components have their own **Context** classes, for example, the base class **Context**, **ApplicationContext**, **AbilityStageContext**, **UIAbilityContext**, **ExtensionContext**, and **ServiceExtensionContext**. - The figure below illustrates the inheritance relationship of contexts. - + ![context-inheritance](figures/context-inheritance.png) - The figure below illustrates the holding relationship of contexts. - + ![context-holding](figures/context-holding.png) - The following describes the information provided by different contexts. - - [UIAbilityContext](../reference/apis/js-apis-inner-application-uiAbilityContext.md): Each UIAbility has the **Context** attribute, which provides APIs to operate the ability, obtain the ability configuration, and more. + - [UIAbilityContext](../reference/apis/js-apis-inner-application-uiAbilityContext.md): Each UIAbility has the **Context** attribute, which provides APIs to operate an application component, obtain the application component configuration, and more. ```ts import UIAbility from '@ohos.app.ability.UIAbility'; export default class EntryAbility extends UIAbility { - onCreate(want, launchParam) { - let uiAbilityContext = this.context; - // ... - } + onCreate(want, launchParam) { + let uiAbilityContext = this.context; + // ... + } } ``` + + > **NOTE** + > + > For details about how to obtain the context of a **UIAbility** instance on the page, see [Obtaining the Context of UIAbility](uiability-usage.md#obtaining-the-context-of-uiability). - Scenario-specific [ExtensionContext](../reference/apis/js-apis-inner-application-extensionContext.md): For example, ServiceExtensionContext, inherited from ExtensionContext, provides APIs related to background services. ```ts import ServiceExtensionAbility from '@ohos.app.ability.ServiceExtensionAbility'; export default class MyService extends ServiceExtensionAbility { - onCreate(want) { - let serviceExtensionContext = this.context; - // ... - } + onCreate(want) { + let serviceExtensionContext = this.context; + // ... + } } ``` - [AbilityStageContext](../reference/apis/js-apis-inner-application-abilityStageContext.md): module-level context. It provides **HapModuleInfo** and **Configuration** in addition to those provided by the base class **Context**. ```ts - import AbilityStage from "@ohos.app.ability.AbilityStage"; + import AbilityStage from '@ohos.app.ability.AbilityStage'; export default class MyAbilityStage extends AbilityStage { - onCreate() { - let abilityStageContext = this.context; - // ... - } + onCreate() { + let abilityStageContext = this.context; + // ... + } } ``` - - [ApplicationContext](../reference/apis/js-apis-inner-application-applicationContext.md): application-level context. It provides APIs for subscribing to ability lifecycle changes, system memory changes, and system environment changes. The application-level context can be obtained from UIAbility, ExtensionAbility, and AbilityStage. + - [ApplicationContext](../reference/apis/js-apis-inner-application-applicationContext.md): application-level context. It provides APIs for subscribing to application component lifecycle changes, system memory changes, and system environment changes. The application-level context can be obtained from UIAbility, ExtensionAbility, and AbilityStage. ```ts import UIAbility from '@ohos.app.ability.UIAbility'; export default class EntryAbility extends UIAbility { - onCreate(want, launchParam) { - let applicationContext = this.context.getApplicationContext(); - // ... - } + onCreate(want, launchParam) { + let applicationContext = this.context.getApplicationContext(); + // ... + } } ``` @@ -67,9 +71,9 @@ This topic describes how to use the context in the following scenarios: - [Obtaining the Application Development Path](#obtaining-the-application-development-path) -- [Obtaining and Modifying Encrypted Areas](#obtaining-and-modifying-encrypted-areas) +- [Obtaining and Modifying Encryption Areas](#obtaining-and-modifying-encryption-areas) - [Creating Context of Another Application or Module](#creating-context-of-another-application-or-module) -- [Subscribing to Ability Lifecycle Changes in a Process](#subscribing-to-ability-lifecycle-changes-in-a-process) +- [Subscribing to UIAbility Lifecycle Changes in a Process](#subscribing-to-uiability-lifecycle-changes-in-a-process) ### Obtaining the Application Development Path @@ -80,13 +84,13 @@ The following table describes the application development paths obtained from co | Name| Type| Readable| Writable| Description| | -------- | -------- | -------- | -------- | -------- | -| cacheDir | string | Yes| No| Cache directory of the application on the internal storage.
It is the content of **Storage** of an application under **Settings > Apps & services > Apps**.| -| tempDir | string | Yes| No| Temporary file directory of the application.
Files in this directory are deleted after the application is uninstalled.| -| filesDir | string | Yes| No| File directory of the application on the internal storage.
Files in this directory may be synchronized to other directories during application migration or backup.| -| databaseDir | string | Yes| No| Storage directory of the local database.| -| bundleCodeDir | string | Yes| No| Installation directory of the application on the internal storage. A resource file cannot be accessed by combining paths. Use [Resource Manager](../reference/apis/js-apis-resource-manager.md) to access it. | -| distributedFilesDir | string | Yes| No| Storage directory of distributed application data files.| -| preferencesDir | string | Yes| Yes| Preferences directory of the application.| +| bundleCodeDir | string | Yes | No | Path for storing the application's installation package, that is, installation directory of the application on the internal storage. | +| cacheDir | string | Yes| No| Path for storing the application's cache files, that is, cache directory of the application on the internal storage.
It is the content of **Storage** of an application under **Settings > Apps & services > Apps**.| +| filesDir | string | Yes | No | Path for storing the application's common files, that is, file directory of the application on the internal storage.
Files in this directory may be synchronized to other directories during application migration or backup.| +| preferencesDir | string | Yes | Yes | Path for storing the application's preference files, that is, preferences directory of the application. | +| tempDir | string | Yes | No | Path for storing the application's temporary files.
Files in this directory are deleted after the application is uninstalled.| +| databaseDir | string | Yes | No | Path for storing the application's database, that is, storage directory of the local database. | +| distributedFilesDir | string | Yes| No| Path for storing the application's distributed files.| The capability of obtaining the application development path is provided by the base class **Context**. This capability is also provided by **ApplicationContext**, **AbilityStageContext**, **UIAbilityContext**, and **ExtensionContext**. However, the paths obtained from different contexts may differ, as shown below. @@ -111,7 +115,7 @@ The capability of obtaining the application development path is provided by the | bundleCodeDir | {Path prefix}/el1/bundle/| | cacheDir | {Path prefix}/{Encryption level}/base/**haps/{moduleName}**/cache/| | filesDir | {Path prefix}/{Encryption level}/base/**haps/{moduleName}**/files/| - | preferencesDir | {path prefix}/{encryption level}/base/**haps/{moduleName}**/preferences/| + | preferencesDir | {Path prefix}/{Encryption level}/base/**haps/{moduleName}**/preferences/| | tempDir | {Path prefix}/{Encryption level}/base/**haps/{moduleName}**/temp/| | databaseDir | {Path prefix}/{Encryption level}/database/**{moduleName}**/| | distributedFilesDir | {Path prefix}/el2/distributedFiles/**{moduleName}**/| @@ -123,83 +127,92 @@ The sample code for obtaining the application development paths is as follows: import UIAbility from '@ohos.app.ability.UIAbility'; export default class EntryAbility extends UIAbility { - onCreate(want, launchParam) { - let cacheDir = this.context.cacheDir; - let tempDir = this.context.tempDir; - let filesDir = this.context.filesDir; - let databaseDir = this.context.databaseDir; - let bundleCodeDir = this.context.bundleCodeDir; - let distributedFilesDir = this.context.distributedFilesDir; - let preferencesDir = this.context.preferencesDir; - // ... - } + onCreate(want, launchParam) { + let cacheDir = this.context.cacheDir; + let tempDir = this.context.tempDir; + let filesDir = this.context.filesDir; + let databaseDir = this.context.databaseDir; + let bundleCodeDir = this.context.bundleCodeDir; + let distributedFilesDir = this.context.distributedFilesDir; + let preferencesDir = this.context.preferencesDir; + // ... + } } ``` +> **NOTE** +> +> The sample code obtains the sandbox path of the application development path. The absolute path can be obtained by running the **find / -name ** command in the hdc shell after file creation or modification. -### Obtaining and Modifying Encrypted Areas +### Obtaining and Modifying Encryption Areas -You can read and write [the area attribute in the context](../reference/apis/js-apis-inner-application-context.md) to obtain and set an encrypted area. Two encryption levels are supported: +Encrypting application files enhances data security by preventing files from unauthorized access. Different application files require different levels of protection. For private files, such as alarms and wallpapers, the application must place them in the device-level encryption area (EL1) to ensure that they can be accessed before the user enters the password. For sensitive files, such as personal privacy data, the application must place them in the user-level encryption area (EL2). -- AreaMode.EL1: device-level encryption area, which is accessible after the device is powered on. +In practice, you need to select a proper encrypted area based on scenario-specific requirements to protect application data security. The proper use of EL1 and the EL2 can efficiently improve the security. -- AreaMode.EL2: user-level encryption area, which is accessible only after the device is powered on and the password is entered (for the first time). +> **NOTE** +> +> - AreaMode.EL1: device-level encryption area, which is accessible after the device is powered on. +> +> - AreaMode.EL2: user-level encryption area, which is accessible only after the device is powered on and the password is entered (for the first time). + +You can obtain and set the encryption area by reading and writing the [area attribute in Context](../reference/apis/js-apis-inner-application-context.md). ```ts import UIAbility from '@ohos.app.ability.UIAbility'; export default class EntryAbility extends UIAbility { - onCreate(want, launchParam) { - // Before storing common information, switch the encryption level to EL1. - if (this.context.area === 1) {// Obtain the area. - this.context.area = 0; // Modify the area. - } - // Store common information. - - // Before storing sensitive information, switch the encryption level to EL2. - if (this.context.area === 0) { // Obtain the area. - this.context.area = 1; // Modify the area. - } - // Store sensitive information. + onCreate(want, launchParam) { + // Before storing common information, switch the encryption level to EL1. + if (this.context.area === 1) {// Obtain the area. + this.context.area = 0; // Modify the area. } + // Store common information. + + // Before storing sensitive information, switch the encryption level to EL2. + if (this.context.area === 0) { // Obtain the area. + this.context.area = 1; // Modify the area. + } + // Store sensitive information. + } } ``` ### Creating Context of Another Application or Module -The base class **Context** provides the [createBundleContext(bundleName:string)](../reference/apis/js-apis-inner-application-context.md#contextcreatebundlecontext), [createModuleContext(moduleName:string)](../reference/apis/js-apis-inner-application-context.md#contextcreatemodulecontext), and [createModuleContext(bundleName:string, moduleName:string)](../reference/apis/js-apis-inner-application-context.md#contextcreatemodulecontext-1) methods for creating the context of other applications or modules, so as to obtain the resource information, for example, [obtaining the application development paths](#obtaining-the-application-development-path) of other modules. +The base class **Context** provides [createBundleContext(bundleName:string)](../reference/apis/js-apis-inner-application-context.md#contextcreatebundlecontext), [createModuleContext(moduleName:string)](../reference/apis/js-apis-inner-application-context.md#contextcreatemodulecontext), and [createModuleContext(bundleName:string, moduleName:string)](../reference/apis/js-apis-inner-application-context.md#contextcreatemodulecontext-1) to create the context of other applications or modules, so as to obtain the resource information, for example, [obtaining the application development paths](#obtaining-the-application-development-path) of other modules. - Call **createBundleContext(bundleName:string)** to create the context of another application. > **NOTE** > > To obtain the context of another application: > - > - Request the **ohos.permission.GET_BUNDLE_INFO_PRIVILEGED** permission. For details, see [Permission Application Guide](../security/accesstoken-guidelines.md#declaring-permissions-in-the-configuration-file). + > - Request the **ohos.permission.GET_BUNDLE_INFO_PRIVILEGED** permission. For details, see [Declaring Permissions in the Configuration File](../security/accesstoken-guidelines.md#declaring-permissions-in-the-configuration-file). > > - This is a system API and cannot be called by third-party applications. - + For example, application information displayed on the home screen includes the application name and icon. The home screen application calls the foregoing method to obtain the context information, so as to obtain the resource information including the application name and icon. - + ```ts import UIAbility from '@ohos.app.ability.UIAbility'; export default class EntryAbility extends UIAbility { - onCreate(want, launchParam) { - let bundleName2 = "com.example.application"; - let context2 = this.context.createBundleContext(bundleName2); - let label2 = context2.applicationInfo.label; - // ... - } + onCreate(want, launchParam) { + let bundleName2 = 'com.example.application'; + let context2 = this.context.createBundleContext(bundleName2); + let label2 = context2.applicationInfo.label; + // ... + } } ``` - + - Call **createModuleContext(bundleName:string, moduleName:string)** to obtain the context of a specified module of another application. After obtaining the context, you can obtain the resource information of that module. > **NOTE** > > To obtain the context of a specified module of another application: > - > - Request the **ohos.permission.GET_BUNDLE_INFO_PRIVILEGED** permission. For details, see [Permission Application Guide](../security/accesstoken-guidelines.md#declaring-permissions-in-the-configuration-file). + > - Request the **ohos.permission.GET_BUNDLE_INFO_PRIVILEGED** permission. For details, see [Declaring Permissions in the Configuration File](../security/accesstoken-guidelines.md#declaring-permissions-in-the-configuration-file). > > - This is a system API and cannot be called by third-party applications. @@ -207,12 +220,12 @@ The base class **Context** provides the [createBundleContext(bundleName:string)] import UIAbility from '@ohos.app.ability.UIAbility'; export default class EntryAbility extends UIAbility { - onCreate(want, launchParam) { - let bundleName2 = "com.example.application"; - let moduleName2 = "module1"; - let context2 = this.context.createModuleContext(bundleName2, moduleName2); - // ... - } + onCreate(want, launchParam) { + let bundleName2 = 'com.example.application'; + let moduleName2 = 'module1'; + let context2 = this.context.createModuleContext(bundleName2, moduleName2); + // ... + } } ``` @@ -222,77 +235,90 @@ The base class **Context** provides the [createBundleContext(bundleName:string)] import UIAbility from '@ohos.app.ability.UIAbility'; export default class EntryAbility extends UIAbility { - onCreate(want, launchParam) { - let moduleName2 = "module1"; - let context2 = this.context.createModuleContext(moduleName2); - // ... - } + onCreate(want, launchParam) { + let moduleName2 = 'module1'; + let context2 = this.context.createModuleContext(moduleName2); + // ... + } } ``` -### Subscribing to Ability Lifecycle Changes in a Process +### Subscribing to UIAbility Lifecycle Changes in a Process -In the DFX statistics scenario of an application, if you need to collect statistics on the stay duration and access frequency of a page, you can subscribe to ability lifecycle changes. +In the DFX statistics scenario of an application, if you need to collect statistics on the stay duration and access frequency of a page, you can subscribe to UIAbility lifecycle changes in a process. -When the ability lifecycle changes in a process, for example, being created or destroyed, becoming visible or invisible, or gaining or losing focus, the corresponding callback is triggered, and a listener ID is returned. The ID is incremented by 1 each time the listener is registered. When the number of listeners exceeds the upper limit (2^63-1), -1 is returned. The following uses [UIAbilityContext](../reference/apis/js-apis-inner-application-uiAbilityContext.md) as an example. +[ApplicationContext](../reference/apis/js-apis-inner-application-applicationContext) provides APIs for subscribing to UIAbility lifecycle changes in a process. When the UIAbility lifecycle changes in a process, for example, being created or destroyed, becoming visible or invisible, or gaining or losing focus, the corresponding callback is triggered. Each time the callback is registered, a listener lifecycle ID is returned, with the value incremented by 1 each time. When the number of listeners exceeds the upper limit (2^63-1), **-1** is returned. The following uses [UIAbilityContext](../reference/apis/js-apis-inner-application-uiAbilityContext.md) as an example. ```ts import UIAbility from '@ohos.app.ability.UIAbility'; import window from '@ohos.window'; -const TAG: string = "[Example].[Entry].[EntryAbility]"; +const TAG: string = '[Example].[Entry].[EntryAbility]'; export default class EntryAbility extends UIAbility { - lifecycleId: number; - - onCreate(want, launchParam) { - let abilityLifecycleCallback = { - onAbilityCreate(ability) { - console.info(TAG, "onAbilityCreate ability:" + JSON.stringify(ability)); - }, - onWindowStageCreate(ability, windowStage) { - console.info(TAG, "onWindowStageCreate ability:" + JSON.stringify(ability)); - console.info(TAG, "onWindowStageCreate windowStage:" + JSON.stringify(windowStage)); - }, - onWindowStageActive(ability, windowStage) { - console.info(TAG, "onWindowStageActive ability:" + JSON.stringify(ability)); - console.info(TAG, "onWindowStageActive windowStage:" + JSON.stringify(windowStage)); - }, - onWindowStageInactive(ability, windowStage) { - console.info(TAG, "onWindowStageInactive ability:" + JSON.stringify(ability)); - console.info(TAG, "onWindowStageInactive windowStage:" + JSON.stringify(windowStage)); - }, - onWindowStageDestroy(ability, windowStage) { - console.info(TAG, "onWindowStageDestroy ability:" + JSON.stringify(ability)); - console.info(TAG, "onWindowStageDestroy windowStage:" + JSON.stringify(windowStage)); - }, - onAbilityDestroy(ability) { - console.info(TAG, "onAbilityDestroy ability:" + JSON.stringify(ability)); - }, - onAbilityForeground(ability) { - console.info(TAG, "onAbilityForeground ability:" + JSON.stringify(ability)); - }, - onAbilityBackground(ability) { - console.info(TAG, "onAbilityBackground ability:" + JSON.stringify(ability)); - }, - onAbilityContinue(ability) { - console.info(TAG, "onAbilityContinue ability:" + JSON.stringify(ability)); - } - } - // 1. Obtain the application context through the context attribute. - let applicationContext = this.context.getApplicationContext(); - // 2. Register a listener for the lifecycle changes through the application context. - this.lifecycleId = applicationContext.on("abilityLifecycle", abilityLifecycleCallback); - console.info(TAG, "register callback number: " + JSON.stringify(this.lifecycleId)); + // Define a lifecycle ID. + lifecycleId: number; + + onCreate(want, launchParam) { + // Define a lifecycle callback object. + let abilityLifecycleCallback = { + // Called when a UIAbility is created. + onAbilityCreate(uiAbility) { + console.log(TAG, `onAbilityCreate uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`); + }, + // Called when a window is created. + onWindowStageCreate(uiAbility, windowStage: window.WindowStage) { + console.log(TAG, `onWindowStageCreate uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`); + console.log(TAG, `onWindowStageCreate windowStage: ${JSON.stringify(windowStage)}`); + }, + // Called when the window becomes active. + onWindowStageActive(uiAbility, windowStage: window.WindowStage) { + console.log(TAG, `onWindowStageActive uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`); + console.log(TAG, `onWindowStageActive windowStage: ${JSON.stringify(windowStage)}`); + }, + // Called when the window becomes inactive. + onWindowStageInactive(uiAbility, windowStage: window.WindowStage) { + console.log(TAG, `onWindowStageInactive uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`); + console.log(TAG, `onWindowStageInactive windowStage: ${JSON.stringify(windowStage)}`); + }, + // Called when the window is destroyed. + onWindowStageDestroy(uiAbility, windowStage: window.WindowStage) { + console.log(TAG, `onWindowStageDestroy uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`); + console.log(TAG, `onWindowStageDestroy windowStage: ${JSON.stringify(windowStage)}`); + }, + // Called when the UIAbility is destroyed. + onAbilityDestroy(uiAbility) { + console.log(TAG, `onAbilityDestroy uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`); + }, + // Called when the UIAbility is switched from the background to the foreground. + onAbilityForeground(uiAbility) { + console.log(TAG, `onAbilityForeground uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`); + }, + // Called when the UIAbility is switched from the foreground to the background. + onAbilityBackground(uiAbility) { + console.log(TAG, `onAbilityBackground uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`); + }, + // Called when UIAbility is continued on another device. + onAbilityContinue(uiAbility) { + console.log(TAG, `onAbilityContinue uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`); + } } + // Obtain the application context. + let applicationContext = this.context.getApplicationContext(); + // Register the application lifecycle callback. + this.lifecycleId = applicationContext.on('Lifecycle', abilityLifecycleCallback); + console.log(TAG, `register callback number: ${this.lifecycleId}`); + } - onDestroy() { - let applicationContext = this.context.getApplicationContext(); - applicationContext.off("abilityLifecycle", this.lifecycleId, (error, data) => { - console.info(TAG, "unregister callback success, err: " + JSON.stringify(error)); - }); - } + // ... + + onDestroy() { + // Obtain the application context. + let applicationContext = this.context.getApplicationContext(); + // Deregister the application lifecycle callback. + applicationContext.off('abilityLifecycle', this.lifecycleId); + } } ``` diff --git a/en/application-dev/application-models/component-startup-rules.md b/en/application-dev/application-models/component-startup-rules.md index 0e6c2ce33c..26b2446893 100644 --- a/en/application-dev/application-models/component-startup-rules.md +++ b/en/application-dev/application-models/component-startup-rules.md @@ -30,7 +30,7 @@ In view of this, OpenHarmony formulates a set of component startup rules, as fol - An application is considered as a foreground application only when the application process gains focus or its UIAbility component is running in the foreground. - Verify the **ohos.permission.START_ABILITIES_FROM_BACKGROUND** permission. -- **When the startAbilityByCall() method is used, verify the call permission.** For details, see [Using Ability Call to Implement UIAbility Interaction](uiability-intra-device-interaction.md#using-ability-call-to-implement-uiability-interaction) and [Using Cross-Device Ability Call](hop-multi-device-collaboration.md#using-cross-device-ability-call). +- **When the startAbilityByCall() method is used, verify the call permission.** For details, see [Using Call to Implement UIAbility Interaction](uiability-intra-device-interaction.md#using-call-to-implement-uiability-interaction) and [Using Cross-Device Call](hop-multi-device-collaboration.md#using-cross-device-call). - Verify the **ohos.permission.ABILITY_BACKGROUND_COMMUNICATION** permission. diff --git a/en/application-dev/application-models/create-pageability.md b/en/application-dev/application-models/create-pageability.md index 783646ff4c..d33b7af946 100644 --- a/en/application-dev/application-models/create-pageability.md +++ b/en/application-dev/application-models/create-pageability.md @@ -30,7 +30,7 @@ export default { ``` -After the PageAbility is created, its abilities-related configuration items are displayed in the **config.json** file. The following is an example **config.json** file of an ability named EntryAbility: +After the PageAbility is created, its abilities-related configuration items are displayed in the **config.json** file. The following is an example **config.json** file of an ability named MainAbility: ```json { @@ -48,13 +48,13 @@ After the PageAbility is created, its abilities-related configuration items are ], "orientation": "unspecified", "visible": true, - "srcPath": "EntryAbility", - "name": ".EntryAbility", + "srcPath": "MainAbility", + "name": ".MainAbility", "srcLanguage": "ets", "icon": "$media:icon", - "description": "$string:EntryAbility_desc", + "description": "$string:MainAbility_desc", "formsEnabled": false, - "label": "$string:EntryAbility_label", + "label": "$string:MainAbility_label", "type": "page", "launchType": "singleton" } @@ -76,22 +76,22 @@ In the FA model, you can call **getContext** of **featureAbility** to obtain the The following code snippet shows how to use **getContext()** to obtain the application context and distributed directory: ```ts -import featureAbility from '@ohos.ability.featureAbility' -import fileIo from '@ohos.fileio' +import featureAbility from '@ohos.ability.featureAbility'; +import fs from '@ohos.file.fs'; (async () => { - let dir: string + let dir: string; try { - console.info('Begin to getOrCreateDistributedDir') - dir = await featureAbility.getContext().getOrCreateDistributedDir() + console.info('Begin to getOrCreateDistributedDir'); + dir = await featureAbility.getContext().getOrCreateDistributedDir(); console.info('distribute dir is ' + dir) } catch (error) { - console.error('getOrCreateDistributedDir failed with ' + error) + console.error('getOrCreateDistributedDir failed with ' + error); } let fd: number; let path = dir + "/a.txt"; - fd = fileIo.openSync(path, 0o2 | 0o100, 0o666); - fileIo.close(fd); + fd = fs.openSync(path, fs.OpenMode.READ_WRITE).fd; + fs.close(fd); })() ``` diff --git a/en/application-dev/application-models/data-share-via-want.md b/en/application-dev/application-models/data-share-via-want.md index c04bea2916..05da4e5299 100644 --- a/en/application-dev/application-models/data-share-via-want.md +++ b/en/application-dev/application-models/data-share-via-want.md @@ -1,111 +1,133 @@ # Using Want to Share Data Between Applications - Users often need to share data (such as a text or an image) from one application to another. The following uses PDF file sharing as an example to describe how to use Want to share data between applications. +Data sharing requires two UIAbility components (one for the sharing party and the other for the shared party) and one system component (used as the application sharing box). When the sharing party initiates data sharing by calling **startAbility()**, the system implicitly matches and displays all applications that support the type of data to share. After the user selects an application, the system starts the application to complete data sharing. -## Prerequisites - -1. There are two UIAbility components (one for the sharing party and the other for the shared party) and one system component (used as the application selector). When the sharing party initiates data sharing through **startAbility()**, the application selector is started. The system implicitly matches and displays all applications that support the type of data to share. After the user selects an application, the system starts that application to complete data sharing. - -2. In this section, data sharing is triggered by touching a button. You can use other ways to trigger data sharing during application development. This section focuses on the Want configuration used for data sharing. - -3. The following actions are involved in this section: - - **ACTION_SELECT (ohos.want.action.select)**: action of displaying the application selector. - - **ACTION_SEND_DATA (ohos.want.action.sendData)**: action of launching the UI for sending a single data record. It is used to transfer data to the shared party. - - -## How to Develop - -- Sharing party - 1. In the stage mode, the [File Descriptor (FD)](../reference/apis/js-apis-fileio.md#fileioopensync) is used for file transfer. This example assumes that the path of the file to share is obtained. - - ```ts - import fileIO from '@ohos.fileio'; - - // let path = ... - // Open the file whose path is a variable. - let fileFd = fileIO.openSync(path, 0o102, 0o666); - ``` - - 2. As described in the prerequisites, the sharing party starts an application selector and shares the data to the selector, and the selector transfers the data to the shared party. Want of the sharing party must be nested at two layers. At the first layer, implicit Want is used together with the **ohos.want.action.select** action to display the application selector. At the second layer, complete Want is declared in the custom field **parameters** to transfer the data to share. - - ```ts - import wantConstant from '@ohos.app.ability.wantConstant'; - - // let path = ... - // let fileFd = ... - // let fileSize = ... - let want = { - / This action is used to implicitly match the application selector. - action: wantConstant.Action.ACTION_SELECT, - // This is the custom parameter in the first layer of Want, - / which is intended to add information to the application selector. - parameters: { - // MIME type of PDF. - "ability.picker.type": "application/pdf", - "ability.picker.fileNames": [path], - "ability.picker.fileSizes": [fileSize], - // This nested Want ,which will be directly sent to the selected application. - "ability.want.params.INTENT": { - "action": "ohos.want.action.sendData", - "type": "application/pdf", - "parameters": { - "keyFd": {"type": "FD", "value": fileFd} - } - } - } +In this section, data sharing is triggered by touching a button. You can use other ways to trigger data sharing during application development. This section focuses on how to configure Want to implement data sharing. + +The following actions are involved for data sharing: + +- **ohos.want.action.select**: action of starting the application sharing box. +- **ohos.want.action.sendData**: action of sending a single data record, that is, transferring data to the shared party. + +## Sharing Party + +The sharing party starts an application sharing box and transfers the data to the shared party. Therefore, Want of the sharing party must be nested at two layers. In the first layer, implicit Want is used together with the **ohos.want.action.select** action to display the application sharing box. In the second layer, the data to share is declared + +in the custom field **parameters**, and then the Want that includes the **ohos.want.action.sendData** action and the **parameters** field is transferred to the application sharing box. The shared party obtains the shared data from **parameters**. + +```ts +import common from '@ohos.app.ability.common'; + +let fileType = 'application/pdf'; +let fileName = 'TestFile.pdf'; +let fileFd = -1; // Obtain the file descriptor (FD) of the file to share. +let fileSize; // Obtain the size of the file to share. + +function implicitStartAbility() { + let context = getContext(this) as common.UIAbilityContext; + let wantInfo = { + / This action is used to implicitly match the application sharing box. + action: 'ohos.want.action.select', + // This is the custom parameter in the first layer of Want, + / which is intended to add information to the application sharing box. + parameters: { + // MIME type of PDF. + 'ability.picker.type': fileType, + 'ability.picker.fileNames': [fileName], + 'ability.picker.fileSizes': [fileSize], + // This is nested Want ,which will be directly sent to the selected application. + 'ability.want.params.INTENT': { + 'action': 'ohos.want.action.sendData', + 'type': 'application/pdf', + 'parameters': { + 'keyFd': { 'type': 'FD', 'value': fileFd } + } } - ``` - - In the preceding code, the custom field **parameters** is used. The **ability.picker.\*** fields in the first-layer **parameters** are used to pass the information to be displayed on the application selector. The following fields are involved: - - - **"ability.picker.type"**: The application selector renders the file type icon based on this field. - - **"ability.picker.fileNames"**: The application selector displays the file name based on this field. - - **"ability.picker.fileSizes"**: The application selector displays the file size based on this field. The unit is byte. - - **"ability.picker.fileNames"** and **"ability.picker.fileSizes"** are arrays and have a one-to-one mapping. - - For example, when **"ability.picker.type"** is **"application/pdf"**, **"ability.picker.fileNames"** is **"["APIs.pdf"]"**, and **"ability.picker.fileSizes"** is **"[350 \* 1024]"**, the application selector is displayed as follows: - - ![stage-want2](figures/stage-want2.png) - - In the preceding code, the **ability.want.params.INTENT** field is nested Want. In this field, **action** and **type** are used for implicit matching by the application selector. For details about implicit matching, see [Matching Rules of Implicit Want](explicit-implicit-want-mappings.md#matching-rules-of-implicit-want). After the user selects an application, the nested Want of the **ability.want.params.INTENT** field is passed to that application. - -- Shared party - 1. As mentioned above, the application selector performs implicit matching based on the **ability.want.params.INTENT** field. Therefore, you must set **skills** in the ability configuration file (**module.json5** file in the stage model) of the shared party as follows: - - ```ts - "skills": [ - { - "entities": [ + } + } + context.startAbility(wantInfo).then(() => { + // ... + }).catch((err) => { + // ... + }) +} +``` + +> **NOTE** +> +> Data sharing can be implemented only in FD format. For details about how to obtain the FD and file name, see [File Management](../reference/apis/js-apis-file-fs.md). + +In the preceding code, under the custom field **parameters**, the following **ability.picker.*** fields are used to pass the information to be displayed on the application sharing box: + +- **ability.picker.type**: file type icon. +- **ability.picker.fileNames**: file name. +- **ability.picker.fileSizes**: file size, in bytes. +- **ability.picker.fileNames** and **ability.picker.fileSizes** are arrays and have a one-to-one mapping. + +The following figure shows an example. + +![stage-want2](figures/stage-want2.png) + +## Shared Party + +To enable the shared party to identify the shared content, configure **skills** in the [module.json5 file](../quick-start/module-configuration-file.md) of the UIAbility of the shared party. The **actions** and **type** fields in **uris** match the **action** and **type** fields in **ability.want.params.INTENT** of the sharing party, respectively. + +```json +{ + "module": { + // ... + "abilities": [ + { + // ... + "skills": [ + { // ... - ], - "actions": [ + "actions": [ + "action.system.home", "ohos.want.action.sendData" // ... - ], - "uris": [ - { - "type": "application/pdf" - }, - // ... - ] - }, - ] - ``` - - The **actions** and **type** fields in **uris** match the **action** and **type** fields in **ability.want.params.INTENT**, respectively. - - Files can be transferred in FD mode, but not URI mode. In implicit matching, the **type** field in Want must match the **type** field in **uris** under **skills** of the shared party. Therefore, specify only the **type** field in **uris**. If **host** and **port** are specified, the matching fails. The application selector initiates implicit matching based on **ability.want.params.INTENT**. Therefore, when the **uri** field added to **ability.want.params.INTENT** matches the **uris** field under **skills**, the matching is successful and additional data can be transferred. - 2. After the application selector starts the shared party, the system calls **onCreate** and passes **ability.want.params.INTENT** to the **want** parameter. - - ```ts - onCreate(want, launchParam) { - // When keyFd is undefined, the application crashes. - if (want["parameters"]["keyFd"] !== undefined) { - // Receive the file descriptor. - let fd = want["parameters"]["keyFd"].value; - // ... - } + ], + "uris": [ + { + "type": "application/pdf" + }, + ] + } + ] } - ``` + ] + } +} +``` + +After the user selects an application, the Want nested in the **ability.want.params.INTENT** field is passed to that application. The UIAbility of the shared party, after being started, can call [onCreate()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate) or [onNewWant()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityonnewwant) to obtain the passed Want. + +The following is an example of the Want obtained. You can use the FD of the shared file to perform required operations. + +```json +{ + "deviceId": "", + "bundleName": "com.example.myapplication", + "abilityName": "EntryAbility", + "moduleName": "entry", + "uri": "", + "type": "application/pdf", + "flags": 0, + "action": "ohos.want.action.sendData", + "parameters": { + "component.startup.newRules": true, + "keyFd": { + "type": "FD", + "value": 36 + }, + "mime-type": "application/pdf", + "moduleName": "entry", + "ohos.aafwk.param.callerPid": 3488, + "ohos.aafwk.param.callerToken": 537379209, + "ohos.aafwk.param.callerUid": 20010014 + }, + "entities": [] +} +``` diff --git a/en/application-dev/application-models/explicit-implicit-want-mappings.md b/en/application-dev/application-models/explicit-implicit-want-mappings.md index d2c44bb4b4..921cdec8ba 100644 --- a/en/application-dev/application-models/explicit-implicit-want-mappings.md +++ b/en/application-dev/application-models/explicit-implicit-want-mappings.md @@ -4,9 +4,6 @@ Both explicit Want and implicit Want can be used to match an ability to start ba ## Matching Rules of Explicit Want - -The table below describes the matching rules of explicit Want. - | Name| Type| Matching Item| Mandatory| Rule Description| | -------- | -------- | -------- | -------- | -------- | | deviceId | string | Yes| No| If this field is unspecified, only abilities on the local device are matched.| @@ -22,8 +19,6 @@ The table below describes the matching rules of explicit Want. ## Matching Rules for Implicit Want -The table below describes the matching rules of implicit Want. - | Name | Type | Matching Item| Mandatory| Rule Description | | ----------- | ------------------------------ | ------ | ---- | ------------------------------------------------------------ | | deviceId | string | Yes | No | Implicit invoking is not supported across devices. | @@ -37,8 +32,9 @@ The table below describes the matching rules of implicit Want. | flags | number | No | No | This field is not used for matching and is directly transferred to the system for processing. It is generally used to set runtime information, such as URI data authorization.| | parameters | {[key: string]: any} | No | No | This field is not used for matching. It is passed to the target ability as a parameter. | -Get familiar with the following about implicit Want: +## Interpretation of Implicit Want Matching Rules +Get familiar with the following about implicit Want: - The **want** parameter passed by the caller indicates the operation to be performed by the caller. It also provides data and application type restrictions. @@ -50,7 +46,7 @@ The system matches the **want** parameter (including the **action**, **entities* ### Matching Rules of action in the want Parameter -The system matches the [action](../reference/apis/js-apis-ability-wantConstant.md#wantconstantaction) attribute in the **want** parameter passed by the caller against **actions** under **skills** of the abilities. +The system matches the **action** attribute in the **want** parameter passed by the caller against **actions** under **skills** of the abilities. - If **action** in the passed **want** parameter is specified but **actions** under **skills** of an ability is unspecified, the matching fails. @@ -60,14 +56,14 @@ The system matches the [action](../reference/apis/js-apis-ability-wantConstant.m - If **action** in the passed **want** parameter is specified, and **actions** under **skills** of an ability is specified but does not contain **action** in the passed **want** parameter, the matching fails. - **Figure 1** Matching rules of action in the want parameter - - ![want-action](figures/want-action.png) + **Figure 1** Matching rules of action in the want parameter + + ![want-action](figures/want-action.png) ### Matching Rules of entities in the want Parameter -The system matches the [entities](../reference/apis/js-apis-ability-wantConstant.md#wantconstantentity) attribute in the **want** parameter passed by the caller against **entities** under **skills** of the abilities. +The system matches the **entities** attribute in the **want** parameter passed by the caller against **entities** under **skills** of the abilities. - If **entities** in the passed **want** parameter is unspecified but **entities** under **skills** of an ability is specified, the matching is successful. @@ -79,19 +75,15 @@ The system matches the [entities](../reference/apis/js-apis-ability-wantConstant - If **entities** in the passed **want** parameter is specified, and **entities** under **skills** of an ability is specified but does not contain **entities** in the passed **want** parameter, the matching fails. - Figure 2 Matching rule of entities in the want parameter + **Figure 2** Matching rule of entities in the want parameter - ![want-entities](figures/want-entities.png) + ![want-entities](figures/want-entities.png) ### Matching Rules of uri and type in the want Parameter When the **uri** and **type** parameters are specified in the **want** parameter to initiate a component startup request, the system traverses the list of installed components and matches the **uris** array under **skills** of the abilities one by one. If one of the **uris** arrays under **skills** matches the **uri** and **type** in the passed **want**, the matching is successful. -Figure 3 Matching rules when uri and type are specified in the want parameter - -![want-uri-type1](figures/want-uri-type1.png) - There are four combinations of **uri** and **type** settings. The matching rules are as follows: - Neither **uri** or **type** is specified in the **want** parameter. @@ -111,13 +103,19 @@ There are four combinations of **uri** and **type** settings. The matching rules - If the **uris** array under **skills** of an ability is unspecified, the matching fails. - If the **uris** array under **skills** of an ability contains an element whose [uri is matched](#matching-rules-of-uri) and [type is matched](#matching-rules-of-type), the matching is successful. Otherwise, the matching fails. +Leftmost URI matching: When only **scheme**, a combination of **scheme** and **host**, or a combination of **scheme**, **host**, and **port** is configured in the **uris** array under **skills** of the ability, +the matching is successful only if the leftmost URI in the passed **want** parameter matches **scheme**, the combination of **scheme** and **host**, or the combination of **scheme**, **host**, and **port**. -To simplify the description, **uri** and **type** passed in the **want** parameter are called **w_uri** and **w_type**, respectively; the **uris** array under **skills** of an ability to match is called **s_uris**; each element in the array is called **s_uri**. Matching is performed from top to bottom. +**Figure 3** Matching rules when uri and type are specified in the want parameter + + ![want-uri-type1](figures/want-uri-type1.png) -Figure 4 Matching rules of uri and type in the want parameter +To simplify the description, **uri** and **type** passed in the **want** parameter are called **w_uri** and **w_type**, respectively; the **uris** array under **skills** of an ability to match is called **s_uris**; each element in the array is called **s_uri**. Matching is performed from top to bottom. + +**Figure 4** Matching rules of uri and type in the want parameter -![want-uri-type2](figures/want-uri-type2.png) +![want-uri-type2](figures/want-uri-type2.png) ### Matching Rules of uri @@ -128,7 +126,9 @@ To simplify the description, **uri** in the passed **want** parameter is called - If **host** of **s_uri** is unspecified and **scheme** of **w_uri** and **scheme** of **s_uri** are the same, the matching is successful. Otherwise, the matching fails. -- If **path**, **pathStartWith**, and **pathRegex** of **s_uri** are unspecified and **w_uri** and **s_uri** are the same, the matching is successful. Otherwise, the matching fails. +- If **port** of **s_uri** is unspecified and the combination of **scheme** and **host** of **w_uri** is the same as the combination of **scheme** and **host** of **s_uri**, the matching is successful. Otherwise, the matching fails. + +- If **path**, **pathStartWith**, and **pathRegex** of **s_uri** are unspecified and the combination of **scheme**, **host**, and **port** of **w_uri** is the same as the combination of **scheme**, **host**, and **port** of **s_uri**, the matching is successful. Otherwise, the matching fails. - If **path** of **s_uri** is specified and the **full path expressions** of **w_uri** and **s_uri** are the same, the matching is successful. Otherwise, the matching of **pathStartWith** continues. @@ -139,12 +139,17 @@ To simplify the description, **uri** in the passed **want** parameter is called > **NOTE** > > The **scheme**, **host**, **port**, **path**, **pathStartWith**, and **pathRegex** attributes of **uris** under **skills** of an ability are concatenated. If **path**, **pathStartWith**, and **pathRegex** are declared in sequence, **uris** can be concatenated into the following expressions: +> +> - **Full path expression**: scheme://host:port/path +> +> - **Prefix expression**: scheme://host:port/pathStartWith +> +> - **Regular expression**: scheme://host:port/pathRegex > -> - **Full path expression**: `scheme://host:port/path` -> -> - **Prefix expression**: `scheme://host:port/pathStartWith` -> -> - **Regular expression**: `scheme://host:port/pathRegex` +> - **Prefix URI expression**: When only **scheme**, a combination of **scheme** and **host**, or a combination of **scheme**, **host**, and **port** is configured in the configuration file, the matching is successful if a URI prefixed with the configuration file is passed in. +> * `scheme://` +> * `scheme://host` +> * `scheme://host:port` ### Matching Rules of type diff --git a/en/application-dev/application-models/figures/want-uri-type1.png b/en/application-dev/application-models/figures/want-uri-type1.png index e0fe40d1a3cd40b72379bd947aaf2e3977021b32..ed53694a9608e8529c5e4633fca42b041bc7ab76 100644 GIT binary patch literal 124101 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%0Di~X6RK}0Gej5fAOmtXJ!Jo!fx-5sr(ob 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 K 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 diff --git a/en/application-dev/application-models/hop-cross-device-migration.md b/en/application-dev/application-models/hop-cross-device-migration.md index d90a10995f..714698d002 100644 --- a/en/application-dev/application-models/hop-cross-device-migration.md +++ b/en/application-dev/application-models/hop-cross-device-migration.md @@ -1,4 +1,4 @@ -# Cross-Device Migration (for System Applications Only)] +# Cross-Device Migration (for System Applications Only) ## When to Use diff --git a/en/application-dev/application-models/hop-multi-device-collaboration.md b/en/application-dev/application-models/hop-multi-device-collaboration.md index e5dfb522fc..7cf66fbab7 100644 --- a/en/application-dev/application-models/hop-multi-device-collaboration.md +++ b/en/application-dev/application-models/hop-multi-device-collaboration.md @@ -11,7 +11,7 @@ Multi-device coordination involves the following scenarios: - [Connecting to ServiceExtensionAbility Across Devices](#connecting-to-serviceextensionability-across-devices) -- [Using Cross-Device Ability Call](#using-cross-device-ability-call) +- [Using Cross-Device Call](#using-cross-device-call) ## Multi-Device Collaboration Process @@ -102,7 +102,7 @@ On device A, touch the **Start** button provided by the initiator application to abilityName: 'FuncAbility', moduleName: 'module1', // moduleName is optional. } - // context is the ability-level context of the initiator UIAbility. + // context is the AbilityContext of the initiator UIAbility. this.context.startAbility(want).then(() => { // ... }).catch((err) => { @@ -118,7 +118,7 @@ On device A, touch the **Start** button provided by the initiator application to ### Available APIs -**Table 2** APIs for starting an ability across devices and returning the result data +**Table 2** APIs for starting a UIAbility across devices and returning the result data | API| Description| | -------- | -------- | @@ -154,7 +154,7 @@ On device A, touch the **Start** button provided by the initiator application to abilityName: 'FuncAbility', moduleName: 'module1', // moduleName is optional. } - // context is the ability-level context of the initiator UIAbility. + // context is the AbilityContext of the initiator UIAbility. this.context.startAbilityForResult(want).then((data) => { // ... }).catch((err) => { @@ -174,7 +174,7 @@ On device A, touch the **Start** button provided by the initiator application to moduleName: 'module1', }, } - // context is the ability-level context of the target UIAbility. + // context is the AbilityContext of the target UIAbility. this.context.terminateSelfWithResult(abilityResult, (err) => { // ... }); @@ -187,7 +187,7 @@ On device A, touch the **Start** button provided by the initiator application to // ... - // context is the ability-level context of the initiator UIAbility. + // context is the UIAbilityContext of the initiator UIAbility. this.context.startAbilityForResult(want).then((data) => { if (data?.resultCode === RESULT_CODE) { // Parse the information returned by the target UIAbility. @@ -315,24 +315,24 @@ A system application can connect to a service on another device by calling [conn ``` -## Using Cross-Device Ability Call +## Using Cross-Device Call -The basic principle of cross-device ability call is the same as that of intra-device ability call. For details, see [Using Ability Call to Implement UIAbility Interaction (for System Applications Only)](uiability-intra-device-interaction.md#using-ability-call-to-implement-uiability-interaction-for-system-applications-only). +The basic principle of cross-device call is the same as that of intra-device call. For details, see [Using Call to Implement UIAbility Interaction (for System Applications Only)](uiability-intra-device-interaction.md#using-call-to-implement-uiability-interaction-for-system-applications-only). -The following describes how to implement multi-device collaboration through cross-device ability call. +The following describes how to implement multi-device collaboration through cross-device call. ### Available APIs -**Table 4** Ability call APIs +**Table 4** Call APIs | API| Description| | -------- | -------- | | startAbilityByCall(want: Want): Promise<Caller>; | Starts a UIAbility in the foreground or background and obtains the caller object for communicating with the UIAbility.| -| on(method: string, callback: CalleeCallBack): void | Callback invoked when the callee ability registers a method.| -| off(method: string): void | Callback invoked when the callee ability deregisters a method.| -| call(method: string, data: rpc.Parcelable): Promise<void> | Sends agreed parcelable data to the callee ability.| -| callWithResult(method: string, data: rpc.Parcelable): Promise<rpc.MessageSequence> | Sends agreed parcelable data to the callee ability and obtains the agreed parcelable data returned by the callee ability.| +| on(method: string, callback: CalleeCallBack): void | Callback invoked when the CalleeAbility registers a method.| +| off(method: string): void | Callback invoked when the CalleeAbility deregisters a method.| +| call(method: string, data: rpc.Parcelable): Promise<void> | Sends agreed parcelable data to the CalleeAbility.| +| callWithResult(method: string, data: rpc.Parcelable): Promise<rpc.MessageSequence> | Sends agreed parcelable data to the CalleeAbility and obtains the agreed parcelable data returned by the CalleeAbility.| | release(): void | Releases the caller object.| | on(type: "release", callback: OnReleaseCallback): void | Callback invoked when the caller object is released.| @@ -367,17 +367,17 @@ The following describes how to implement multi-device collaboration through cros } ``` -3. Create the callee ability. +3. Create the CalleeAbility. - For the callee ability, implement the callback to receive data and the methods to marshal and unmarshal data. When data needs to be received, use **on()** to register a listener. When data does not need to be received, use **off()** to deregister the listener. + For the CalleeAbility, implement the callback to receive data and the methods to marshal and unmarshal data. When data needs to be received, use **on()** to register a listener. When data does not need to be received, use **off()** to deregister the listener. 1. Configure the launch type of the UIAbility. - Set **launchType** of the callee ability to **singleton** in the **module.json5** file. + Set **launchType** of the CalleeAbility to **singleton** in the **module.json5** file. | JSON Field| Description| | -------- | -------- | - | "launchType"| Ability launch type. Set this parameter to **singleton**.| + | "launchType"| UIAbility launch type. Set this parameter to **singleton**.| An example of the UIAbility configuration is as follows: @@ -401,7 +401,7 @@ The following describes how to implement multi-device collaboration through cros 3. Define the agreed parcelable data. - The data formats sent and received by the caller and callee abilities must be consistent. In the following example, the data formats are number and string. + The data formats sent and received by the CallerAbility and CalleeAbility must be consistent. In the following example, the data formats are number and string. ```ts export default class MyParcelable { @@ -438,13 +438,13 @@ The following describes how to implement multi-device collaboration through cros function sendMsgCallback(data) { console.info('CalleeSortFunc called') - // Obtain the parcelable data sent by the caller ability. + // Obtain the parcelable data sent by the CallerAbility. let receivedData = new MyParcelable(0, '') data.readParcelable(receivedData) console.info(`receiveData[${receivedData.num}, ${receivedData.str}]`) // Process the data. - // Return the parcelable data result to the caller ability. + // Return the parcelable data result to the CallerAbility. return new MyParcelable(receivedData.num + 1, `send ${receivedData.str} succeed`) } @@ -467,7 +467,7 @@ The following describes how to implement multi-device collaboration through cros } ``` -4. Obtain the caller object and access the callee ability. +4. Obtain the caller object and access the CalleeAbility. 1. Import the **UIAbility** module. ```ts @@ -476,7 +476,7 @@ The following describes how to implement multi-device collaboration through cros 2. Obtain the caller object. - The **context** attribute of the ability implements **startAbilityByCall** to obtain the caller object for communication. The following example uses **this.context** to obtain the **context** attribute of the ability, uses **startAbilityByCall** to start the callee ability, obtain the caller object, and register the **onRelease** listener of the caller ability. You need to implement processing based on service requirements. + The **context** attribute of the UIAbility implements **startAbilityByCall** to obtain the caller object for communication. The following example uses **this.context** to obtain the **context** attribute of the UIAbility, uses **startAbilityByCall** to start the CalleeAbility, obtain the caller object, and register the **onRelease** listener of the CallerAbility. You need to implement processing based on service requirements. ```ts async onButtonGetRemoteCaller() { @@ -491,7 +491,7 @@ The following describes how to implement multi-device collaboration through cros if (data != null) { caller = data console.info('get remote caller success') - // 注册caller的release监听 + // Register the onRelease listener of the CallerAbility. caller.onRelease((msg) => { console.info(`remote caller onRelease is called ${msg}`) }) @@ -505,8 +505,8 @@ The following describes how to implement multi-device collaboration through cros For details about how to implement **getRemoteDeviceId()**, see [Starting UIAbility and ServiceExtensionAbility Across Devices (No Data Returned)](#starting-uiability-and-serviceextensionability-across-devices-no-data-returned). -5. Sends agreed parcelable data to the callee ability. - 1. The parcelable data can be sent to the callee ability with or without a return value. The method and parcelable data must be consistent with those of the callee ability. The following example describes how to send data to the callee ability. +5. Sends agreed parcelable data to the CalleeAbility. + 1. The parcelable data can be sent to the CalleeAbility with or without a return value. The method and parcelable data must be consistent with those of the CalleeAbility. The following example describes how to send data to the CalleeAbility. ```ts const MSG_SEND_METHOD: string = 'CallSendMsg' @@ -520,7 +520,7 @@ The following describes how to implement multi-device collaboration through cros } ``` - 2. In the following, **CallWithResult** is used to send data **originMsg** to the callee ability and assign the data processed by the **CallSendMsg** method to **backMsg**. + 2. In the following, **CallWithResult** is used to send data **originMsg** to the CalleeAbility and assign the data processed by the **CallSendMsg** method to **backMsg**. ```ts const MSG_SEND_METHOD: string = 'CallSendMsg' diff --git a/en/application-dev/application-models/mission-management-overview.md b/en/application-dev/application-models/mission-management-overview.md index b6f6668f7c..e371e8380f 100644 --- a/en/application-dev/application-models/mission-management-overview.md +++ b/en/application-dev/application-models/mission-management-overview.md @@ -28,10 +28,10 @@ Missions are managed by system applications (such as home screen), rather than t - Switch a mission to the foreground. -A UIAbility instance corresponds to an independent mission. Therefore, when an application calls the **startAbility()** method to start a UIAbility, a mission is created. +A UIAbility instance corresponds to an independent mission. Therefore, when an application calls **startAbility()** to start a UIAbility, a mission is created. -To call [missionManager](../reference/apis/js-apis-application-missionManager.md) to manage missions, the home screen application must request the **ohos.permission.MANAGE_MISSIONS** permission. For details about the configuration, see [Permission Application Guide](../security/accesstoken-guidelines.md#declaring-permissions-in-the-configuration-file). +To call [missionManager](../reference/apis/js-apis-application-missionManager.md) to manage missions, the home screen application must request the **ohos.permission.MANAGE_MISSIONS** permission. For details about the configuration, see [Declaring Permissions in the Configuration File](../security/accesstoken-guidelines.md#declaring-permissions-in-the-configuration-file). You can use **missionManager** to manage missions, for example, listening for mission changes, obtaining mission information or snapshots, and clearing, locking, or unlocking missions. The sample code is as follows: diff --git a/en/application-dev/application-models/uiability-intra-device-interaction.md b/en/application-dev/application-models/uiability-intra-device-interaction.md index 58cea75a98..5ea819219e 100644 --- a/en/application-dev/application-models/uiability-intra-device-interaction.md +++ b/en/application-dev/application-models/uiability-intra-device-interaction.md @@ -17,7 +17,7 @@ This topic describes the UIAbility interaction modes in the following scenarios. - [Starting a Specified Page of UIAbility](#starting-a-specified-page-of-uiability) -- [Using Ability Call to Implement UIAbility Interaction (for System Applications Only)](#using-ability-call-to-implement-uiability-interaction-for-system-applications-only) +- [Using Call to Implement UIAbility Interaction (for System Applications Only)](#using-call-to-implement-uiability-interaction-for-system-applications-only) ## Starting UIAbility in the Same Application @@ -38,7 +38,7 @@ Assume that your application has two UIAbility components: EntryAbility and Func info: 'From the Index page of EntryAbility', }, } - // context is the ability-level context of the initiator UIAbility. + // context is the UIAbilityContext of the initiator UIAbility. this.context.startAbility(wantInfo).then(() => { // ... }).catch((err) => { @@ -54,7 +54,7 @@ Assume that your application has two UIAbility components: EntryAbility and Func export default class FuncAbility extends UIAbility { onCreate(want, launchParam) { - // Receive the parameters passed by the caller UIAbility. + // Receive the parameters passed by the initiator UIAbility. let funcAbilityWant = want; let info = funcAbilityWant?.parameters?.info; // ... @@ -65,7 +65,7 @@ Assume that your application has two UIAbility components: EntryAbility and Func 3. To stop the **UIAbility** instance after the FuncAbility service is complete, call **terminateSelf()** in FuncAbility. ```ts - // context is the ability-level context of the UIAbility instance to stop. + // context is the UIAbilityContext of the UIAbility instance to stop. this.context.terminateSelf((err) => { // ... }); @@ -88,7 +88,7 @@ When starting FuncAbility from EntryAbility, you want the result to be returned info: 'From the Index page of EntryAbility', }, } - // context is the ability-level context of the initiator UIAbility. + // context is the UIAbilityContext of the initiator UIAbility. this.context.startAbilityForResult(wantInfo).then((data) => { // ... }).catch((err) => { @@ -111,23 +111,23 @@ When starting FuncAbility from EntryAbility, you want the result to be returned }, }, } - // context is the ability-level context of the callee UIAbility. + // context is the AbilityContext of the target UIAbility. this.context.terminateSelfWithResult(abilityResult, (err) => { // ... }); ``` -3. After FuncAbility stops itself, EntryAbility uses the **startAbilityForResult()** method to receive the information returned by FuncAbility. The value of **RESULT_CODE** must be the same as the preceding value. +3. After FuncAbility stops itself, EntryAbility uses **startAbilityForResult()** to receive the information returned by FuncAbility. The value of **RESULT_CODE** must be the same as the preceding value. ```ts const RESULT_CODE: number = 1001; // ... - // context is the ability-level context of the initiator UIAbility. + // context is the UIAbilityContext of the initiator UIAbility. this.context.startAbilityForResult(want).then((data) => { if (data?.resultCode === RESULT_CODE) { - // Parse the information returned by the callee UIAbility. + // Parse the information returned by the target UIAbility. let info = data.want?.parameters?.info; // ... } @@ -139,13 +139,13 @@ When starting FuncAbility from EntryAbility, you want the result to be returned ## Starting UIAbility of Another Application -Generally, the user only needs to do a common operation (for example, selecting a document application to view the document content) to start the UIAbility of another application. The [implicit Want launch mode](want-overview.md#types-of-want) is recommended. The system identifies a matched UIAbility and starts it based on the **want** parameter of the caller. +Generally, the user only needs to do a common operation (for example, selecting a document application to view the document content) to start the UIAbility of another application. The [implicit Want launch mode](want-overview.md#types-of-want) is recommended. The system identifies a matched UIAbility and starts it based on the **want** parameter of the initiator UIAbility. There are two ways to start **UIAbility**: [explicit and implicit](want-overview.md). - Explicit Want launch: This mode is used to start a determined UIAbility component of an application. You need to set **bundleName** and **abilityName** of the target application in the **want** parameter. -- Implicit Want launch: The user selects a UIAbility to start based on the matching conditions. That is, the UIAbility to start is not determined (the **abilityName** parameter is not specified). When the **startAbility()** method is called, the **want** parameter specifies a series of parameters such as [entities](../reference/apis/js-apis-ability-wantConstant.md#wantconstantentity) and [actions](../reference/apis/js-apis-ability-wantConstant.md#wantconstantaction). **entities** provides additional type information of the target UIAbility, such as the browser or video player. **actions** specifies the common operations to perform, such as viewing, sharing, and application details. Then the system analyzes the **want** parameter to find the right UIAbility to start. You usually do not know whether the target application is installed and what **bundleName** and **abilityName** of the target application are. Therefore, implicit Want launch is usually used to start the UIAbility of another application. +- Implicit Want launch: The user selects a UIAbility to start based on the matching conditions. That is, the UIAbility to start is not determined (the **abilityName** parameter is not specified). When **startAbility()** is called, the **want** parameter specifies a series of parameters such as [entities](../reference/apis/js-apis-ability-wantConstant.md#wantconstantentity) and [actions](../reference/apis/js-apis-ability-wantConstant.md#wantconstantaction). **entities** provides category information of the target UIAbility, such as the browser or video player. **actions** specifies the common operations to perform, such as viewing, sharing, and application details. Then the system analyzes the **want** parameter to find the right UIAbility to start. You usually do not know whether the target application is installed and what **bundleName** and **abilityName** of the target application are. Therefore, implicit Want launch is usually used to start the UIAbility of another application. This section describes how to start the UIAbility of another application through implicit Want. @@ -175,7 +175,7 @@ This section describes how to start the UIAbility of another application through } ``` -2. Include **entities** and **actions** of the caller's **want** parameter into **entities** and **actions** under **skills** of the target UIAbility. After the system matches the UIAbility that meets the **entities** and **actions** information, a dialog box is displayed, showing the list of matched UIAbility instances for users to select. For details about how to obtain the context, see [Obtaining the Context of UIAbility](uiability-usage.md#obtaining-the-context-of-uiability). +2. Include **entities** and **actions** of the initiator UIAbility's **want** parameter into **entities** and **actions** under **skills** of the target UIAbility. After the system matches the UIAbility that meets the **entities** and **actions** information, a dialog box is displayed, showing the list of matched UIAbility instances for users to select. For details about how to obtain the context, see [Obtaining the Context of UIAbility](uiability-usage.md#obtaining-the-context-of-uiability). ```ts let wantInfo = { @@ -187,7 +187,7 @@ This section describes how to start the UIAbility of another application through entities: ['entity.system.default'], } - // context is the ability-level context of the initiator UIAbility. + // context is the UIAbilityContext of the initiator UIAbility. this.context.startAbility(wantInfo).then(() => { // ... }).catch((err) => { @@ -202,7 +202,7 @@ This section describes how to start the UIAbility of another application through 3. To stop the **UIAbility** instance after the document application is used, call **terminateSelf()**. ```ts - // context is the ability-level context of the UIAbility instance to stop. + // context is the AbilityContext of the UIAbility instance to stop. this.context.terminateSelf((err) => { // ... }); @@ -211,7 +211,7 @@ This section describes how to start the UIAbility of another application through ## Starting UIAbility of Another Application and Obtaining the Return Result -If you want to obtain the return result when using implicit Want to start the UIAbility of another application, use the **startAbilityForResult()** method. An example scenario is that the main application needs to start a third-party payment application and obtain the payment result. +If you want to obtain the return result when using implicit Want to start the UIAbility of another application, use **startAbilityForResult()**. An example scenario is that the main application needs to start a third-party payment application and obtain the payment result. 1. In the **module.json5** file of the UIAbility corresponding to the payment application, set [entities](../reference/apis/js-apis-ability-wantConstant.md#wantconstantentity) and [actions](../reference/apis/js-apis-ability-wantConstant.md#wantconstantaction) under **skills**. @@ -239,7 +239,7 @@ If you want to obtain the return result when using implicit Want to start the UI } ``` -2. Call the **startAbilityForResult()** method to start the UIAbility of the payment application. Include **entities** and **actions** of the caller's **want** parameter into **entities** and **actions** under **skills** of the target UIAbility. Use **data** in the asynchronous callback to receive the information returned to the caller after the payment UIAbility stops itself. After the system matches the UIAbility that meets the **entities** and **actions** information, a dialog box is displayed, showing the list of matched UIAbility instances for users to select. +2. Call **startAbilityForResult()** to start the UIAbility of the payment application. Include **entities** and **actions** of the initiator UIAbility's **want** parameter into **entities** and **actions** under **skills** of the target UIAbility. Use **data** in the asynchronous callback to receive the information returned to the initiator UIAbility after the payment UIAbility stops itself. After the system matches the UIAbility that meets the **entities** and **actions** information, a dialog box is displayed, showing the list of matched UIAbility instances for users to select. ```ts let wantInfo = { @@ -251,7 +251,7 @@ If you want to obtain the return result when using implicit Want to start the UI entities: ['entity.system.default'], } - // context is the ability-level context of the initiator UIAbility. + // context is the UIAbilityContext of the initiator UIAbility. this.context.startAbilityForResult(wantInfo).then((data) => { // ... }).catch((err) => { @@ -259,7 +259,7 @@ If you want to obtain the return result when using implicit Want to start the UI }) ``` -3. After the payment is finished, call the **terminateSelfWithResult()** method to stop the payment UIAbility and return the **abilityResult** parameter. +3. After the payment is finished, call **terminateSelfWithResult()** to stop the payment UIAbility and return the **abilityResult** parameter. ```ts const RESULT_CODE: number = 1001; @@ -274,13 +274,13 @@ If you want to obtain the return result when using implicit Want to start the UI }, }, } - // context is the ability-level context of the callee UIAbility. + // context is the AbilityContext of the target UIAbility. this.context.terminateSelfWithResult(abilityResult, (err) => { // ... }); ``` -4. Receive the information returned by the payment application in the callback of the **startAbilityForResult()** method. The value of **RESULT_CODE** must be the same as that returned by **terminateSelfWithResult()**. +4. Receive the information returned by the payment application in the callback of **startAbilityForResult()**. The value of **RESULT_CODE** must be the same as that returned by **terminateSelfWithResult()**. ```ts const RESULT_CODE: number = 1001; @@ -289,10 +289,10 @@ If you want to obtain the return result when using implicit Want to start the UI // Want parameter information. }; - // context is the ability-level context of the initiator UIAbility. + // context is the UIAbilityContext of the initiator UIAbility. this.context.startAbilityForResult(want).then((data) => { if (data?.resultCode === RESULT_CODE) { - // Parse the information returned by the callee UIAbility. + // Parse the information returned by the target UIAbility. let payResult = data.want?.parameters?.payResult; // ... } @@ -309,7 +309,7 @@ A UIAbility component can have multiple pages. When it is started in different s ### Specifying a Startup Page -When the caller UIAbility starts another UIAbility, it usually needs to redirect to a specified page. For example, FuncAbility contains two pages: Index (corresponding to the home page) and Second (corresponding to function A page). You can configure the specified page URL in the **want** parameter by adding a custom parameter to **parameters** in **want**. For details about how to obtain the context, see [Obtaining the Context of UIAbility](uiability-usage.md#obtaining-the-context-of-uiability). +When the initiator UIAbility starts another UIAbility, it usually needs to redirect to a specified page. For example, FuncAbility contains two pages: Index (corresponding to the home page) and Second (corresponding to function A page). You can configure the specified page URL in the **want** parameter by adding a custom parameter to **parameters** in **want**. For details about how to obtain the context, see [Obtaining the Context of UIAbility](uiability-usage.md#obtaining-the-context-of-uiability). ```ts @@ -322,7 +322,7 @@ let wantInfo = { router: 'funcA', }, } -// context is the ability-level context of the initiator UIAbility. +// context is the UIAbilityContext of the initiator UIAbility. this.context.startAbility(wantInfo).then(() => { // ... }).catch((err) => { @@ -344,12 +344,12 @@ export default class FuncAbility extends UIAbility { funcAbilityWant; onCreate(want, launchParam) { - // Receive the parameters passed by the caller UIAbility. + // Receive the parameters passed by the initiator UIAbility. this.funcAbilityWant = want; } onWindowStageCreate(windowStage: Window.WindowStage) { - // Main window is created. Set a main page for this ability. + // Main window is created. Set a main page for this UIAbility. let url = 'pages/Index'; if (this.funcAbilityWant?.parameters?.router) { if (this.funcAbilityWant.parameters.router === 'funA') { @@ -379,7 +379,7 @@ In summary, when a UIAbility instance of application A has been created and the export default class FuncAbility extends UIAbility { onNewWant(want, launchParam) { - // Receive the parameters passed by the caller UIAbility. + // Receive the parameters passed by the initiator UIAbility. globalThis.funcAbilityWant = want; // ... } @@ -412,81 +412,83 @@ In summary, when a UIAbility instance of application A has been created and the ``` > **NOTE** -> When the [launch type of the callee UIAbility](uiability-launch-type.md) is set to **standard**, a new instance is created each time the callee UIAbility is started. In this case, the [onNewWant()](../reference/apis/js-apis-app-ability-uiAbility.md#abilityonnewwant) callback will not be invoked. +> +> When the [launch type of the target UIAbility](uiability-launch-type.md) is set to **standard**, a new instance is created each time the target UIAbility is started. In this case, the [onNewWant()](../reference/apis/js-apis-app-ability-uiAbility.md#abilityonnewwant) callback will not be invoked. -## Using Ability Call to Implement UIAbility Interaction (for System Applications Only) +## Using Call to Implement UIAbility Interaction (for System Applications Only) -Ability call is an extension of the UIAbility capability. It enables the UIAbility to be invoked by and communicate with external systems. The UIAbility invoked can be either started in the foreground or created and run in the background. You can use the ability call to implement data sharing between two UIAbility instances (caller ability and callee ability) through IPC. +Call is an extension of the UIAbility capability. It enables the UIAbility to be invoked by and communicate with external systems. The UIAbility invoked can be either started in the foreground or created and run in the background. You can use the call to implement data sharing between two UIAbility instances (CallerAbility and CalleeAbility) through IPC. -The core API used for the ability call is **startAbilityByCall**, which differs from **startAbility** in the following ways: +The core API used for the call is **startAbilityByCall**, which differs from **startAbility** in the following ways: -- **startAbilityByCall** supports ability launch in the foreground and background, whereas **startAbility** supports ability launch in the foreground only. +- **startAbilityByCall** supports UIAbility launch in the foreground and background, whereas **startAbility** supports UIAbility launch in the foreground only. -- The caller ability can use the caller object returned by **startAbilityByCall** to communicate with the callee ability, but **startAbility** does not provide the communication capability. +- The CallerAbility can use the caller object returned by **startAbilityByCall** to communicate with the CalleeAbility, but **startAbility** does not provide the communication capability. -Ability call is usually used in the following scenarios: +Call is usually used in the following scenarios: -- Communicating with the callee ability +- Communicating with the CalleeAbility -- Starting the callee ability in the background +- Starting the CalleeAbility in the background -**Table 1** Terms used in the ability call +**Table 1** Terms used in the call | **Term**| Description| | -------- | -------- | -| CallerAbility | UIAbility that triggers the ability call.| -| CalleeAbility | UIAbility invoked by the ability call.| -| Caller | Object returned by **startAbilityByCall** and used by the caller ability to communicate with the callee ability.| -| Callee | Object held by the callee ability to communicate with the caller ability.| +| CallerAbility | UIAbility that triggers the call.| +| CalleeAbility | UIAbility invoked by the call.| +| Caller | Object returned by **startAbilityByCall** and used by the CallerAbility to communicate with the CalleeAbility.| +| Callee | Object held by the CalleeAbility to communicate with the CallerAbility.| -The following figure shows the ability call process. +The following figure shows the call process. - Figure 1 Ability call process + Figure 1 Call process ![call](figures/call.png) -- The caller ability uses **startAbilityByCall** to obtain a caller object and uses **call()** of the caller object to send data to the callee ability. +- The CallerAbility uses **startAbilityByCall** to obtain a caller object and uses **call()** of the caller object to send data to the CalleeAbility. -- The callee ability, which holds a **Callee** object, uses **on()** of the **Callee** object to register a callback. This callback is invoked when the callee ability receives data from the caller ability. +- The CalleeAbility, which holds a **Callee** object, uses **on()** of the **Callee** object to register a callback. This callback is invoked when the CalleeAbility receives data from the CallerAbility. > **NOTE** -> 1. Currently, only system applications can use the ability call. +> 1. Currently, only system applications can use the call. > -> 2. The launch type of the callee ability must be **singleton**. +> 2. The launch type of the CalleeAbility must be **singleton**. > -> 3. Both local (intra-device) and cross-device ability calls are supported. The following describes how to initiate a local call. For details about how to initiate a cross-device ability call, see [Using Cross-Device Ability Call](hop-multi-device-collaboration.md#using-cross-device-ability-call). +> 3. Both local (intra-device) and cross-device calls are supported. The following describes how to initiate a local call. For details about how to initiate a cross-device call, see [Using Cross-Device Call](hop-multi-device-collaboration.md#using-cross-device-call). ### Available APIs -The following table describes the main APIs used for the ability call. For details, see [AbilityContext](../reference/apis/js-apis-app-ability-uiAbility.md#caller). +The following table describes the main APIs used for the call. For details, see [AbilityContext](../reference/apis/js-apis-app-ability-uiAbility.md#caller). - **Table 2** Ability call APIs + **Table 2** Call APIs | API| Description| | -------- | -------- | | startAbilityByCall(want: Want): Promise<Caller> | Starts a UIAbility in the foreground (through the **want** configuration) or background (default) and obtains the caller object for communication with the UIAbility. For details, see [AbilityContext](../reference/apis/js-apis-inner-application-uiAbilityContext.md#abilitycontextstartabilitybycall) or [ServiceExtensionContext](../reference/apis/js-apis-inner-application-serviceExtensionContext.md#serviceextensioncontextstartabilitybycall).| -| on(method: string, callback: CalleeCallBack): void | Callback invoked when the callee ability registers a method.| -| off(method: string): void | Callback invoked when the callee ability deregisters a method.| -| call(method: string, data: rpc.Parcelable): Promise<void> | Sends agreed parcelable data to the callee ability.| -| callWithResult(method: string, data: rpc.Parcelable): Promise<rpc.MessageSequence> | Sends agreed parcelable data to the callee ability and obtains the agreed parcelable data returned by the callee ability.| +| on(method: string, callback: CalleeCallBack): void | Callback invoked when the CalleeAbility registers a method.| +| off(method: string): void | Callback invoked when the CalleeAbility deregisters a method.| +| call(method: string, data: rpc.Parcelable): Promise<void> | Sends agreed parcelable data to the CalleeAbility.| +| callWithResult(method: string, data: rpc.Parcelable): Promise<rpc.MessageSequence> | Sends agreed parcelable data to the CalleeAbility and obtains the agreed parcelable data returned by the CalleeAbility.| | release(): void | Releases the caller object.| | on(type: "release", callback: OnReleaseCallback): void | Callback invoked when the caller object is released.| -The implementation of using the ability call for UIAbility interaction involves two parts. +The implementation of using the call for UIAbility interaction involves two parts. -- [Creating a Callee Ability](#creating-a-callee-ability) +- [Creating a CalleeAbility](#creating-a-calleeability) -- [Accessing the Callee Ability](#accessing-the-callee-ability) +- [Accessing the CalleeAbility](#accessing-the-calleeability) -### Creating a Callee Ability +### Creating a CalleeAbility -For the callee ability, implement the callback to receive data and the methods to marshal and unmarshal data. When data needs to be received, use **on()** to register a listener. When data does not need to be received, use **off()** to deregister the listener. +For the CalleeAbility, implement the callback to receive data and the methods to marshal and unmarshal data. When data needs to be received, use **on()** to register a listener. When data does not need to be received, use **off()** to deregister the listener. -1. Configure the ability launch type. - Set **launchType** of the callee ability to **singleton** in the **module.json5** file. +1. Configure the launch type of the UIAbility. + + Set **launchType** of the CalleeAbility to **singleton** in the **module.json5** file. | JSON Field| Description| | -------- | -------- | @@ -514,7 +516,8 @@ For the callee ability, implement the callback to receive data and the methods t ``` 3. Define the agreed parcelable data. - The data formats sent and received by the caller and callee abilities must be consistent. In the following example, the data formats are number and string. + + The data formats sent and received by the CallerAbility and CalleeAbility must be consistent. In the following example, the data formats are number and string. ```ts @@ -542,7 +545,8 @@ For the callee ability, implement the callback to receive data and the methods t ``` 4. Implement **Callee.on** and **Callee.off**. - The time to register a listener for the callee ability depends on your application. The data sent and received before the listener is registered and that after the listener is deregistered are not processed. In the following example, the **MSG_SEND_METHOD** listener is registered in **onCreate** of the ability and deregistered in **onDestroy**. After receiving parcelable data, the application processes the data and returns the data result. You need to implement processing based on service requirements. The sample code is as follows: + + The time to register a listener for the CalleeAbility depends on your application. The data sent and received before the listener is registered and that after the listener is deregistered are not processed. In the following example, the **MSG_SEND_METHOD** listener is registered in **onCreate** of the UIAbility and deregistered in **onDestroy**. After receiving parcelable data, the application processes the data and returns the data result. You need to implement processing based on service requirements. The sample code is as follows: ```ts @@ -552,13 +556,13 @@ For the callee ability, implement the callback to receive data and the methods t function sendMsgCallback(data) { console.info('CalleeSortFunc called'); - // Obtain the parcelable data sent by the caller ability. + // Obtain the parcelable data sent by the CallerAbility. let receivedData = new MyParcelable(0, ''); data.readParcelable(receivedData); console.info(`receiveData[${receivedData.num}, ${receivedData.str}]`); // Process the data. - // Return the parcelable data result to the caller ability. + // Return the parcelable data result to the CallerAbility. return new MyParcelable(receivedData.num + 1, `send ${receivedData.str} succeed`); } @@ -582,7 +586,7 @@ For the callee ability, implement the callback to receive data and the methods t ``` -### Accessing the Callee Ability +### Accessing the CalleeAbility 1. Import the **UIAbility** module. @@ -591,11 +595,12 @@ For the callee ability, implement the callback to receive data and the methods t ``` 2. Obtain the caller interface. - The **context** attribute of the ability implements **startAbilityByCall** to obtain the caller object for communication. The following example uses **this.context** to obtain the **context** attribute of the ability, uses **startAbilityByCall** to start the callee ability, obtain the caller object, and register the **onRelease** listener of the caller ability. You need to implement processing based on service requirements. + + The **UIAbilityContext** attribute implements **startAbilityByCall** to obtain the caller object for communication. The following example uses **this.context** to obtain the **UIAbilityContext**, uses **startAbilityByCall** to start the CalleeAbility, obtain the caller object, and register the **onRelease** listener of the CallerAbility. You need to implement processing based on service requirements. ```ts - // Register the onRelease() listener of the caller ability. + // Register the onRelease() listener of the CallerAbility. private regOnRelease(caller) { try { caller.on("release", (msg) => { diff --git a/en/application-dev/application-models/uiability-launch-type.md b/en/application-dev/application-models/uiability-launch-type.md index 19d7b73402..cf185cd9da 100644 --- a/en/application-dev/application-models/uiability-launch-type.md +++ b/en/application-dev/application-models/uiability-launch-type.md @@ -77,9 +77,9 @@ The **specified** mode is used in some special scenarios. For example, in a docu ![uiability-launch-type2](figures/uiability-launch-type2.png) -For example, there are EntryAbility and SpecifiedAbility, and the launch type of SpecifiedAbility is set to **specified**. You are required to start SpecifiedAbility from EntryAbility. +For example, there are two UIAbility components: EntryAbility and SpecifiedAbility (with the launch type **specified**). You are required to start SpecifiedAbility from EntryAbility. -1. In SpecifiedAbility, set the **launchType** field in the [module.json5 configuration file](../quick-start/module-configuration-file.md) to **specified**. +1. In SpecifiedAbility, set the **launchType** field in the [module.json5 file](../quick-start/module-configuration-file.md) to **specified**. ```json { @@ -95,8 +95,7 @@ For example, there are EntryAbility and SpecifiedAbility, and the launch type of } ``` -2. Before a UIAbility instance is created, you can create a unique string key for the instance. The key is bound to the UIAbility instance when it is created. Each time [startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability) is called, the application is asked which UIAbility instance is used to respond to the [startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability) request. - In EntryAbility, add a custom parameter, for example, **instanceKey**, to the [want](want-overview.md) parameter in [startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability) to distinguish the UIAbility instances. +2. Create a unique string key for the instance. Each time [startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability) is called, the application, based on the key, identifies the UIAbility instance used to respond to the request. In EntryAbility, add a custom parameter, for example, **instanceKey**, to the [want](want-overview.md) parameter in [startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability) to distinguish the UIAbility instance. ```ts // Configure an independent key for each UIAbility instance. @@ -114,7 +113,7 @@ For example, there are EntryAbility and SpecifiedAbility, and the launch type of instanceKey: getInstance(), }, } - // context is the ability-level context of the initiator UIAbility. + // context is the UIAbilityContext of the initiator UIAbility. this.context.startAbility(want).then(() => { // ... }).catch((err) => { @@ -133,7 +132,7 @@ For example, there are EntryAbility and SpecifiedAbility, and the launch type of // In the AbilityStage instance of the callee, a key value corresponding to a UIAbility instance is returned for UIAbility whose launch type is specified. // In this example, SpecifiedAbility of module1 is returned. if (want.abilityName === 'SpecifiedAbility') { - // The returned string key is a custom string. + // The returned key string is a custom string. return `SpecifiedAbilityInstance_${want.parameters.instanceKey}`; } @@ -147,16 +146,13 @@ For example, there are EntryAbility and SpecifiedAbility, and the launch type of > 1. Assume that the application already has a UIAbility instance created, and the launch type of the UIAbility instance is set to **specified**. If [startAbility()](../reference/apis/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability) is called again to start the UIAbility instance, and the [onAcceptWant()](../reference/apis/js-apis-app-ability-abilityStage.md#abilitystageonacceptwant) callback of [AbilityStage](../reference/apis/js-apis-app-ability-abilityStage.md) matches a created UIAbility instance, the original UIAbility instance is started, and no new UIAbility instance is created. In this case, the [onNewWant()](../reference/apis/js-apis-app-ability-uiAbility.md#abilityonnewwant) callback is invoked, but the [onCreate()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityoncreate) and [onWindowStageCreate()](../reference/apis/js-apis-app-ability-uiAbility.md#uiabilityonwindowstagecreate) callbacks are not. > 2. AbilityStage is not automatically generated in the default project of DevEco Studio. For details about how to create an AbilityStage file, see [AbilityStage Component Container](abilitystage.md). - For example, in the document application, different key values are bound to different document instances. Each time a document is created, a new key value (for example, file path) is passed, and a new UIAbility instance is created when UIAbility is started in AbilityStage. However, when you open an existing document, the same UIAbility instance is started again in AbilityStage. - + For example, in the document application, different keys are bound to different document instances. Each time a document is created, a new key (for example, file path) is passed, and a new UIAbility instance is created when UIAbility is started in AbilityStage. However, when you open an existing document, the same UIAbility instance is started again in AbilityStage. + + The following steps are used as an example. -The following steps are used as an example. 1. Open file A. A UIAbility instance, for example, UIAbility instance 1, is started. - 2. Close the process of file A in **Recents**. UIAbility instance 1 is destroyed. Return to the home screen and open file A again. A new UIAbility instance is started, for example, UIAbility instance 2. - 3. Return to the home screen and open file B. A new UIAbility instance is started, for example, UIAbility instance 3. - 4. Return to the home screen and open file A again. UIAbility instance 2 is started. \ No newline at end of file -- GitLab