目录

@ohos.application.DistributedExtensionAbility (Distributed Extension)

The DistributedExtensionAbility module provides the base class for extension capabilities in multi-device collaboration scenarios (for example, dedicated communication services between wearables and mobile phones).

As the base class for extending capabilities in multi-device collaboration scenarios, this module provides the following capabilities:

The following figure shows the core class structure of the collaboration extension and its relationship with the context and custom subclass.

As shown in the preceding figure:

You can obtain the capabilities for multi-device collaboration by inheriting DistributedExtensionAbility and implementing the onCreate, onCollaborate, and onDestroy lifecycle callbacks.

The initial APIs of this module are supported since API version 20. Newly added APIs will be marked with a superscript to indicate their earliest API version.

The APIs of this module can be used only in the stage model.

Modules to Import

import { DistributedExtensionAbility } from '@kit.DistributedServiceKit';

DistributedExtensionAbility

[h2]Attributes

Model restriction: This API can be used only in the stage model.

System capability: SystemCapability.DistributedSched.AppCollaboration

Device behavior differences: If this API is called on a wearable device that does not support distributed services, it does not work.

Name Type Read-Only Optional Description
context DistributedExtensionContext No No Context of the DistributedExtension. This context inherits from ExtensionContext.

[h2]onCreate

onCreate(want: Want): void

Callback invoked to initialize the service logic when a DistributedExtensionAbility instance is created.

Model restriction: This API can be used only in the stage model.

System capability: SystemCapability.DistributedSched.AppCollaboration

Device behavior differences: If this API is called on a wearable device that does not support distributed services, it does not work.

Parameters

Name Type Mandatory Description
want Want Yes Want information related to the current extension, which is used to carry the initialization configuration required for creating the extension.

Example

import { Want } from '@kit.AbilityKit';
import { DistributedExtensionAbility } from '@kit.DistributedServiceKit';

export default class DistributedExtension extends DistributedExtensionAbility {
  onCreate(want: Want) {
    console.info(`DistributedExtension Create ok`);
    console.info(`DistributedExtension on Create want: ${JSON.stringify(want)}`);
    console.info(`DistributedExtension Create end`);
  }
}

[h2]onCollaborate

onCollaborate(wantParam: Record<string, Object>): AbilityConstant.CollaborateResult

Defines an extension lifecycle callback, which is invoked to return the collaboration result in multi-device collaboration scenarios. The returned result determines whether to continue the collaboration process.

Model restriction: This API can be used only in the stage model.

System capability: SystemCapability.DistributedSched.AppCollaboration

Device behavior differences: If this API is called on a wearable device that does not support distributed services, it does not work.

Parameters

Name Type Mandatory Description
wantParam Record<string, Object> Yes Collaboration callback parameter, which is a key-value pair object carrying collaboration-related data transmitted by the caller. You can obtain these data through key values such as ohos.extra.param.key.supportCollaborateIndex and CollaborationValues to determine whether to accept the collaboration request and process the collaboration logic, which affects whether the collaboration process continues.

Return value

Type Description
AbilityConstant.CollaborateResult Whether the coordinator app accepts the collaboration result. The value ACCEPT indicates that the collaboration is accepted and the collaboration process continues. The value REJECT indicates that the collaboration is rejected and the collaboration process ends.

Example

import { abilityConnectionManager, DistributedExtensionAbility } from '@kit.DistributedServiceKit';
import { AbilityConstant } from '@kit.AbilityKit';

export default class DistributedExtension extends DistributedExtensionAbility {
  onCollaborate(wantParam: Record<string, Object>) {
    console.info(`DistributedExtension onCollabRequest Accept to the result of Ability collaborate`);
    let sessionId = -1;
    const collaborationValues = wantParam["CollaborationValues"] as abilityConnectionManager.CollaborationValues;
    if (!collaborationValues) {
      console.error('Failed to get collaborationValues.');
      return sessionId;
    }
    console.info(`onCollab, collaborationValues: ${JSON.stringify(collaborationValues)}`);
    return AbilityConstant.CollaborateResult.ACCEPT;
  }
}

[h2]onDestroy

onDestroy(): void

Callback invoked to clear resources when a ServiceExtensionAbility instance is destroyed.

Model restriction: This API can be used only in the stage model.

System capability: SystemCapability.DistributedSched.AppCollaboration

Device behavior differences: If this API is called on a wearable device that does not support distributed services, it does not work.

Example

import { DistributedExtensionAbility } from '@kit.DistributedServiceKit';

export default class DistributedExtension extends DistributedExtensionAbility {
  onDestroy() {
    console.info('DistributedExtension onDestroy ok');
  }
}

Appendix

DistributedExtensionAbility does not support referencing the following modules.

Kit Module
Ability Kit @ohos.ability.featureAbility (FeatureAbility)
Ability Kit @ohos.ability.particleAbility (ParticleAbility)
Ability Kit UIAbilityContext
Ability Kit @ohos.continuation.continuationManager (Continuation/Collaboration Management)
ArkUI @ohos.prompt (Prompt)
ArkUI @ohos.promptAction (Prompt)
ArkUI @ohos.screenshot (Screenshot)
Background Tasks Kit @ohos.reminderAgent (Agent-powered Reminder)
Background Tasks Kit @ohos.reminderAgentManager (Agent-Powered Reminders)
Basic Services Kit @ohos.account.appAccount (App Account Management)
Basic Services Kit @ohos.account.distributedAccount (Distributed Account Management)
Basic Services Kit @ohos.account.osAccount (System Account Management)
Basic Services Kit @ohos.power (System Power Management)
Basic Services Kit @ohos.wallpaper (Wallpaper)
Camera Kit @ohos.multimedia.cameraPicker (Camera Picker)
Connectivity Kit @ohos.connectedTag (Active Tags)
Connectivity Kit nfctech (Standard NFC Technologies)
Connectivity Kit @ohos.nfc.cardEmulation (Standard NFC Card Emulation)
Connectivity Kit @ohos.nfc.controller (Standard NFC)
Connectivity Kit @ohos.nfc.tag (Standard NFC Tags)
Connectivity Kit tagSession (Standard NFC Tag Session)
Contacts Kit @ohos.contact (Contacts)
Core File Kit @ohos.file.picker (Picker)
Form Kit @ohos.app.form.formBindingData (formBindingData)
Form Kit @ohos.app.form.FormExtensionAbility (FormExtensionAbility)
Form Kit @ohos.app.form.formInfo (formInfo)
Form Kit @ohos.app.form.formProvider (formProvider)
Form Kit @ohos.application.formError (formError)
Form Kit @ohos.application.formInfo (formInfo)
Form Kit @ohos.application.formProvider (formProvider)
IME Kit @ohos.inputMethod (Input Method Framework)
MultimediaKit @ohos.multimedia.mediaLibrary (Media Library Management)
Media Library Kit @ohos.file.sendablePhotoAccessHelper (Album Management Based on a Sendable Object)
Media Library Kit @ohos.file.AlbumPickerComponent (AlbumPickerComponent)
Media Library Kit @ohos.file.PhotoPickerComponent (PhotoPicker Component)
Media Library Kit @ohos.file.RecentPhotoComponent (RecentPhotoComponent)
Media Library Kit @ohos.multimedia.movingphotoview (MovingPhotoView)
Notification Kit @ohos.notification (Notification)
Notification Kit @ohos.notificationManager (NotificationManager)
Sensor Service Kit @ohos.vibrator (Vibrator)
Telephony Kit @ohos.telephony.call (Call)
Telephony Kit @ohos.telephony.sim (SIM Management)
Telephony Kit @ohos.telephony.sms (SMS)
User Authentication Service @ohos.userIAM.userAuth (User Authentication)
Call Service Kit voipCall (In-App Call Management)
Live View Kit liveViewManager
Scan Kit customScan (Barcode Scanning by Custom UI)
Scan Kit generateBarcode (Barcode Image Generation)
Scan Kit detectBarcode (Recognizing Barcodes in an Image)
Scan Kit scanBarcode (Barcode Scanning by Default UI)
Scan Kit scanCore (Common Barcode Scanning Information)