1# @ohos.selectionInput.SelectionExtensionAbility (SelectionExtensionAbility) (System API) 2 3This module provides ExtensionAbility for word selection, allowing users to search or translate text selected using a mouse or touchpad. 4 5> **NOTE** 6> 7> - 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. 8> - The APIs provided by this module are system APIs. 9 10## Modules to Import 11 12```ts 13import { SelectionExtensionAbility } from '@kit.BasicServicesKit'; 14``` 15## SelectionExtensionAbility 16 17### Properties 18 19**System capability**: SystemCapability.SelectionInput.Selection 20 21| Name| Type| Read-Only| Optional| Description| 22| -------- | -------- | -------- | -------- | -------- | 23| context | [SelectionExtensionContext](./js-apis-selectionInput-selectionExtensionContext-sys.md) | No| No| Context of the SelectionExtensionAbility. This context is inherited from [ExtensionContext](../apis-ability-kit/js-apis-inner-application-extensionContext.md).| 24 25### onConnect 26 27onConnect(want: Want): rpc.RemoteObject 28 29Called when the SelectionExtensionAbility instance is created. You can execute initialization logic (such as defining variables, loading resources, and listening for word selection events) within this callback. 30 31**System capability**: SystemCapability.SelectionInput.Selection 32 33**Parameters** 34 35| Name| Type | Mandatory| Description | 36| ------ | ----------- | ---- | ------------------------------- | 37| want | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | Yes| Want information of the SelectionExtensionAbility, including the ability name and bundle name.| 38 39**Return value** 40| Type | Description | 41| ------- | ------------------------------------------------------------------ | 42| [rpc.RemoteObject](../apis-ipc-kit/js-apis-rpc.md#iremoteobject) | Remote object, which is used for communication between the client and server. | 43 44**Example** 45 46```ts 47import { SelectionExtensionAbility } from '@kit.BasicServicesKit'; 48import { rpc } from '@kit.IPCKit'; 49import { Want } from '@kit.AbilityKit'; 50import { hilog } from '@kit.PerformanceAnalysisKit'; 51 52const TAG: string = '[SelectionExtensionAbility]'; 53 54class StubTest extends rpc.RemoteObject { 55 constructor(des: string) { 56 super(des); 57 } 58 onConnect(code: number, data: rpc.MessageSequence, reply: rpc.MessageSequence, option: rpc.MessageOption) { 59 } 60} 61 62class ServiceExtAbility extends SelectionExtensionAbility { 63 onConnect(want: Want): rpc.RemoteObject { 64 hilog.info(0x0000, TAG, `onConnect, want: ${want.abilityName}`); 65 return new StubTest('test'); 66 } 67} 68``` 69 70### onDisconnect 71 72onDisconnect(): void 73 74Called when the **SelectionExtensionAbility** instance is destroyed (for example, when the user disables the word selection function or switches the word selection application). You can clear resources and save data during this lifecycle. This API returns the result synchronously or uses a promise to return the result. 75 76After the **onDisconnect()** lifecycle callback is executed, the application may exit. Consequently, the asynchronous function (for example, asynchronously writing data to the database) in **onDisconnect()** may fail to be executed. Using a Promise for asynchronous callback is recommended to prevent such issues. 77 78The callback is invoked only when the SelectionExtensionAbility exits gracefully. It is not invoked in cases of abnormal exits (for example, due to low memory conditions). 79 80**System capability**: SystemCapability.SelectionInput.Selection 81 82**Example** 83 84```ts 85import { SelectionExtensionAbility } from '@kit.BasicServicesKit'; 86import { hilog } from '@kit.PerformanceAnalysisKit'; 87 88const TAG: string = '[SelectionExtensionAbility]'; 89 90class ServiceExtAbility extends SelectionExtensionAbility { 91 onDisconnect(): void { 92 hilog.info(0x0000, TAG, `onDisconnect`); 93 } 94} 95``` 96