openharmony 鸿蒙 js-apis-plugincomponent

2025-06-12 浏览 (1)

@ohos.pluginComponent (PluginComponentManager)

The PluginComponentManager module provides APIs for the PluginComponent user to request components and data and send component templates and data.

NOTE

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

Modules to Import

import { pluginComponentManager } from '@kit.ArkUI';

PluginComponentTemplate

Describes the PluginComponent template parameters.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.ArkUI.ArkUI.Full

NameTypeMandatoryDescription
sourcestringYesComponent template name.
abilitystringYesBundle name of the provider ability.

pluginComponentManager

Implements a plugin component manager.

KVObject

type KVObject = { [key: string]: number|string|boolean|[]|KVObject }

Defines a key-value pair data structure that conforms to JSON format.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.ArkUI.ArkUI.Full

NameTypeMandatoryDescription
[key: string]number |string |boolean |[] |KVObjectYesKey-value pair:
number: numeric value type.
string: string value type. The value can be an empty string.
boolean: boolean value type.
[]: empty array value.
KVObject: nested KVObject value type.

PushParameters

Defines the parameters required when using the PluginManager.Push API.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.ArkUI.ArkUI.Full

NameTypeMandatoryDescription
wantWantYesAbility information of the component user.
namestringYesComponent name.
dataKVObjectYesComponent data value.
extraDataKVObjectYesAdditional data value.
jsonPathstringNoPath to the external.json file that stores the template path.

RequestParameters

Defines the parameters required when using the PluginManager.Request API.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.ArkUI.ArkUI.Full

NameTypeMandatoryDescription
wantWantYesAbility information of the component provider.
namestringYesName of the requested component.
dataKVObjectYesAdditional data.
jsonPathstringNoPath to the external.json file that stores the template path. Request communication is not triggered when jsonPath is not empty or not set.

RequestCallbackParameters

Provides the result returned after the PluginManager.Request API is called.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.ArkUI.ArkUI.Full

NameTypeMandatoryDescription
componentTemplatePluginComponentTemplateYesComponent template.
dataKVObjectYesComponent data.
extraDataKVObjectYesAdditional data.

RequestEventResult

Provides the result returned after the request listener is registered and the requested event is received.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.ArkUI.ArkUI.Full

NameTypeMandatoryDescription
templatestringNoComponent template.
dataKVObjectNoComponent data.
extraDataKVObjectNoAdditional data.

OnPushEventCallback

type OnPushEventCallback = (source: Want, template: PluginComponentTemplate, data: KVObject, extraData: KVObject) => void

Registers the listener for the push event.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.ArkUI.ArkUI.Full

Parameters

NameTypeMandatoryDescription
sourceWantYesInformation about the push request sender.
templatePluginComponentTemplateYesName of the request component template for the push request sender.
dataKVObjectYesData.
extraDataKVObjectYesAdditional data.

Example

import { pluginComponentManager, PluginComponentTemplate } from '@kit.ArkUI';
import { Want } from '@kit.AbilityKit';

function onPushListener(source: Want, template: PluginComponentTemplate, data: pluginComponentManager.KVObject, extraData: pluginComponentManager.KVObject) {
  console.log("onPushListener template.source=" + template.source);
  console.log("onPushListener source=" + JSON.stringify(source));
  console.log("onPushListener template=" + JSON.stringify(template));
  console.log("onPushListener data=" + JSON.stringify(data));
  console.log("onPushListener extraData=" + JSON.stringify(extraData));
}

OnRequestEventCallback

type OnRequestEventCallback = (source: Want, name: string, data: KVObject) => RequestEventResult

Registers the listener for the request event.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.ArkUI.ArkUI.Full

Parameters

NameTypeMandatoryDescription
sourceWantYesInformation about the request sender.
namestringYesTemplate name.
dataKVObjectYesAdditional data.

Return value

TypeDescription
RequestEventResultProvides the result returned after the request listener is registered and the requested event is received.

Example

import { pluginComponentManager } from '@kit.ArkUI';
import { Want } from '@kit.AbilityKit';

function onRequestListener(source: Want, name: string, data: pluginComponentManager.KVObject) {
  console.error("onRequestListener");
  console.log("onRequestListener source=" + JSON.stringify(source));
  console.log("onRequestListener name=" + name);
  console.log("onRequestListener data=" + JSON.stringify(data));
  let RtnData: Record<string, string|pluginComponentManager.KVObject> = {
    'template': "ets/pages/plugin.js",
    'data': data,
  }
  return RtnData;
}

pluginComponentManager.push

push(param: PushParameters , callback: AsyncCallback<void>): void

Pushes the component and data to the component user.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.ArkUI.ArkUI.Full

Parameters

NameTypeMandatoryDescription
paramPushParametersYesInformation about the component user.
callbackAsyncCallback<void>YesAsynchronous callback used to return the result.

Example

import { pluginComponentManager } from '@kit.ArkUI';
pluginComponentManager.push(
  {
    want: {
      bundleName: "com.example.provider",
      abilityName: "com.example.provider.MainAbility",
    },
    name: "plugintemplate",
    data: {
      "key_1": "plugin component test",
      "key_2": 34234,
    },
    extraData: {
      "extra_str": "this is push event",
    },
    jsonPath: "",
  },
  (err, data) => {
    console.log("push_callback: push ok!");
  }
)

pluginComponentManager.request

request(param: RequestParameters, callback: AsyncCallback<RequestCallbackParameters>): void

Requests the component from the component provider.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.ArkUI.ArkUI.Full

Parameters

NameTypeMandatoryDescription
paramRequestParametersYesInformation about the component request.
callbackAsyncCallback<RequestCallbackParameters>YesAsynchronous callback used to return the requested data.

Example

import { pluginComponentManager } from '@kit.ArkUI';
pluginComponentManager.request(
  {
    want: {
      bundleName: "com.example.provider",
      abilityName: "com.example.provider.MainAbility",
    },
    name: "plugintemplate",
    data: {
      "key_1": "plugin component test",
      "key_2": 1111111,
    },
    jsonPath: "",
  },
  (err, data) => {
    console.log("request_callback: componentTemplate.ability=" + data.componentTemplate.ability);
    console.log("request_callback: componentTemplate.source=" + data.componentTemplate.source);
    console.log("request_callback: data=" + JSON.stringify(data.data));
    console.log("request_callback: extraData=" + JSON.stringify(data.extraData));
  }
)

pluginComponentManager.on

on(eventType: string, callback: OnPushEventCallback|OnRequestEventCallback ): void

Listens for events of the request type and returns the requested data, or listens for events of the push type and receives the data pushed by the provider.

Atomic service API: This API can be used in atomic services since API version 12.

System capability: SystemCapability.ArkUI.ArkUI.Full

Parameters

NameTypeMandatoryDescription
eventTypestringYesType of the event to listen for. The options are as follows:
"push": The component provider pushes data to the component user.
"request": The component user proactively requests data from the component provider.
callbackOnPushEventCallback |OnRequestEventCallbackYesCallback used to return the result. The type is OnPushEventCallback for the push event and OnRequestEventCallback for the request event.

Example

import { pluginComponentManager, PluginComponentTemplate } from '@kit.ArkUI';
import { Want } from '@kit.AbilityKit';
function onPushListener(source:Want, template:PluginComponentTemplate, data:pluginComponentManager.KVObject, extraData:pluginComponentManager.KVObject) {
  console.log("onPushListener template.source=" + template.source);
  console.log("onPushListener source=" + JSON.stringify(source));
  console.log("onPushListener template=" + JSON.stringify(template));
  console.log("onPushListener data=" + JSON.stringify(data));
  console.log("onPushListener extraData=" + JSON.stringify(extraData));
}
function onRequestListener(source:Want, name:string, data:pluginComponentManager.KVObject) {
  console.error("onRequestListener");
  console.log("onRequestListener source=" + JSON.stringify(source));
  console.log("onRequestListener name=" + name);
  console.log("onRequestListener data=" + JSON.stringify(data));
  let RtnData:Record<string,string|pluginComponentManager.KVObject> = { 'template': "ets/pages/plugin.js", 'data': data };
  return RtnData;
}
pluginComponentManager.on("push", onPushListener);
pluginComponentManager.on("request", onRequestListener);

About the external.json File

The external.json file is created by developers. It stores component names and template paths in key-value pairs. The component name is used as the keyword, and the corresponding template path is used as the value.

Example

{
  "PluginProviderExample": "ets/pages/PluginProviderExample.js",
  "plugintemplate2": "ets/pages/plugintemplate2.js"
}

你可能感兴趣的鸿蒙文章

harmony 鸿蒙ArkUI

harmony 鸿蒙ARKUI_TextPickerCascadeRangeContent

harmony 鸿蒙ARKUI_TextPickerRangeContent

harmony 鸿蒙ArkUI_AnimateCompleteCallback

harmony 鸿蒙ArkUI_AttributeItem

harmony 鸿蒙ArkUI_ColorStop

harmony 鸿蒙ArkUI_ContextCallback

harmony 鸿蒙ArkUI_EventModule

harmony 鸿蒙ArkUI_ExpectedFrameRateRange

harmony 鸿蒙ArkUI_IntOffset

  • 所属分类: 后端技术
  • 本文标签: 鸿蒙 软件
  • 版权声明: 本文链接 https://seaxiang.com/blog/Q9CMsA