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

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.
