ExtensionAbility Component

ExtensionAbility components are application components for specific scenarios. Each ExtensionAbility component corresponds to a specific real-world scenario. For example, FormExtensionAbility is used for widget scenarios, InputMethodExtensionAbility is used for input method scenarios, and WorkSchedulerExtensionAbility is used for deferred task scenarios. You can use ExtensionAbility components of different types in your application to add new capabilities and interact more deeply with the system or other applications.

All types of ExtensionAbility components are defined by the system and are usually managed by the corresponding system services in a unified manner. For example, the InputMethodExtensionAbility component is managed by the input method management service. You cannot directly inherit from ExtensionAbility components. Instead, you can only implement or access the provided ExtensionAbility types.

ExtensionAbility Types

The table below lists the ExtensionAbility types defined in the system.

NOTE

  • The column Allow Third-Party Apps to Implement specifies whether third-party applications can inherit from this ExtensionAbility to implement their own service logic.
  • The column Allow Independent ExtensionAbility Sandbox specifies whether this ExtensionAbility runs in a sandbox separate from the main application's, preventing direct access between them.
ExtensionAbility Type Description Allow Third-Party Apps
to Implement
Allow Independent
ExtensionAbility Sandbox
FormExtensionAbility Provides extended capabilities related to service widgets. Yes No
WorkSchedulerExtensionAbility Provides extended capabilities related to deferred tasks. Yes No
InputMethodExtensionAbility Provides extended capabilities related to input method applications. Yes Yes
ServiceExtensionAbility Provides extended capabilities related to background services.
Third-party applications can connect to this ExtensionAbility and communicate with it.
No No
AccessibilityExtensionAbility Provides extended capabilities related to accessibility services, supporting access and operation of the foreground UI. Yes No
DataShareExtensionAbility Provides extended capabilities related to data sharing, providing data reading and writing services.
Third-party applications can connect to this ExtensionAbility for data reading and writing.
No No
StaticSubscriberExtensionAbility Provides extended capabilities related to static broadcast, used to handle static events such as startup events. Third-party application cannot access this ExtensionAbility. No No
WallpaperExtensionAbility Provides extended capabilities to implement wallpapers displayed on home screen. Third-party application cannot access this ExtensionAbility. No No
BackupExtensionAbility Provides extended capabilities for data backup and restore. Yes No
WindowExtensionAbility Provides extended capabilities that allow system applications to pull up and embed UIs of other applications. Third-party application cannot access this ExtensionAbility. No No
EnterpriseAdminExtensionAbility Provides extended capabilities to handle management events during enterprise management.
Example events are application installation events on the device and excessive incorrect lock screen password input events.
Yes No
PrintExtensionAbility Provides extended capabilities for printing photos and documents in office scenarios. For details, see PrintExtensionAbility. Yes No
ShareExtensionAbility Provides extended capabilities related to the share template service. Yes No
DriverExtensionAbility Provides extended capabilities for driver development. Yes No
ActionExtensionAbility Provides extended capabilities for custom operation service templates. Yes No
AdsServiceExtensionAbility Provides extended capabilities related to background custom ad services. Yes No
EmbeddedUIExtensionAbility Provides extended capabilities for UI embedding across processes. Yes No
FenceExtensionAbility Provides extended capabilities for the geofence. Yes No
DistributedExtensionAbility Provides extended capabilities and lifecycle callbacks for distributed ability creation, destruction, and connection. Yes No
AppServiceExtensionAbility Provides extended capabilities for the application background service, which provides lifecycle callbacks for creating, destroying, connecting to, and disconnecting from the application background service. Yes No
SelectionExtensionAbility Provides extended capabilities for the word selection service, which provides lifecycle callbacks for connecting to and disconnecting from the system application background service. Yes No
FaultLogExtensionAbility Provides extended capabilities for delayed fault notification. Yes No
WebNativeMessagingExtensionAbility Provides extended capabilities for web plugins to interface with native applications. Yes No
NotificationSubscriberExtensionAbility Provides extended capabilities for sending notifications to third-party wearable devices. Yes No
PartnerAgentExtensionAbility Provides device discovery and device offline notification features based on Bluetooth communication technology. Yes No
PhotoEditorExtensionAbility Provides extended capabilities for applications to implement image editing functions. Yes No
AutoFillExtensionAbility Provides auto-fill and save functions. No No
VpnExtensionAbility Provides extended capabilities for third-party VPNs, including lifecycle callbacks such as creation and destruction. Yes No
FormEditExtensionAbility Provides extended editing capabilities for widgets, allowing users to customize widget content, for example, editing a contact widget, modifying contacts displayed in a widget, and editing a weather widget. Yes No
LiveFormExtensionAbility Provides extended animation capabilities for widgets, including overflow animations, rich information notifications, and shallow interactions, greatly enhancing user experience. Yes No
UIServiceExtensionAbility Provides extended UI capabilities (services with foreground windows) for PCs/2-in-1 devices. No No

NOTE

Unless otherwise configured, all ExtensionAbility instances of the same type within an application (with the same bundle name) share a single process. Exceptions:

  • ServiceExtensionAbility (only for system applications), DataShareExtensionAbility (only for system applications), and all UIAbility instances run in the same independent process (main process).
  • The UIExtensionAbility and its child classes ExtensionAbility can specify a separate process via the extensionProcessMode field in the module.json5 file.

Accessing ExtensionAbility of the Specified Type

Each type of ExtensionAbility component is started by the corresponding system management service, rather than applications, so that its lifecycle is under system control. The caller of the ExtensionAbility component does not need to care about its lifecycle.

The following uses InputMethodExtensionAbility as an example. As shown in the figure below, when an application calls the InputMethodExtensionAbility component, the input method management service is called first. The input method management service starts the InputMethodExtensionAbility component, returns the component to the application, and starts to manage its lifecycle.

Figure 1 Using the InputMethodExtensionAbility component

ExtensionAbility-start

Implementing ExtensionAbility of the Specified Type

The following uses FormExtensionAbility as an example. The widget framework provides the base class FormExtensionAbility. You can derive this base class to create your own class (for example, MyFormExtensionAbility) and implement the callbacks, such as onCreate() and onUpdateForm(), to provide specific widget features. For details, see Service Widget.

You do not need to care when to add or delete a widget. The lifecycle of the FormExtensionAbility instance and the lifecycle of the ExtensionAbility process where the FormExtensionAbility instance is located are scheduled and managed by FormManagerService.

form_extension