1# @ohos.app.ability.UIServiceExtensionAbility (UIServiceExtensionAbility) (System API) 2 3UIServiceExtensionAbility provides extended capabilities related to the floating window component. It inherits from [ExtensionAbility](js-apis-app-ability-extensionAbility.md). It is mainly used to provide services with UIs for third-party applications. 4 5 6> **NOTE** 7> 8> The initial APIs of this module are supported since API version 14. Newly added APIs will be marked with a superscript to indicate their earliest API version. 9> 10> The APIs of this module can be used only in the stage model. 11> 12> The APIs of this module must be used in the main thread, but not in child threads such as Worker and TaskPool. 13> 14> The APIs provided by this module are system APIs. 15 16## Modules to Import 17 18```ts 19import { UIServiceExtensionAbility } from '@kit.AbilityKit'; 20``` 21 22## UIServiceExtensionAbility 23 24### Properties 25 26**System capability**: SystemCapability.Ability.AbilityRuntime.Core 27 28**System API**: This is a system API. 29 30| Name| Type| Read Only| Optional| Description| 31| -------- | -------- | -------- | -------- | -------- | 32| context | [UIServiceExtensionContext](js-apis-inner-application-uiserviceExtensionContext-sys.md) | No| No| Context environment for a [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md). This context inherits from [ExtensionContext](js-apis-inner-application-extensionContext.md).| 33 34 35### onCreate 36 37onCreate(want: Want): void 38 39Called to initialize the service logic. 40 41**System capability**: SystemCapability.Ability.AbilityRuntime.Core 42 43**System API**: This is a system API. 44 45**Parameters** 46 47| Name| Type| Read Only| Optional| Description| 48| -------- | -------- | -------- | -------- | -------- | 49| want | [Want](js-apis-app-ability-want.md) | Yes | No| [Want](js-apis-app-ability-want.md) information about the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md), including the ability name and bundle name.| 50 51**Example** 52 53```ts 54import { UIServiceExtensionAbility, Want } from '@kit.AbilityKit'; 55 56class UIServiceExt extends UIServiceExtensionAbility { 57 // Create a UIServiceExtensionAbility. 58 onCreate(want: Want) { 59 console.info(`onCreate, want: ${want.abilityName}`); 60 } 61} 62``` 63 64 65### onRequest 66 67onRequest(want: Want, startId: number): void 68 69Called to request to start a [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md). If the UIServiceExtensionAbility is started by calling [startAbility](js-apis-inner-application-uiAbilityContext.md#startability) or [startUIServiceExtensionAbility](js-apis-inner-application-uiAbilityContext.md#startuiserviceextensionability14), this callback will be invoked after [onCreate](#oncreate). The value of **startId** is incremented for each UIServiceExtensionAbility that is started. 70 71**System capability**: SystemCapability.Ability.AbilityRuntime.Core 72 73**System API**: This is a system API. 74 75**Parameters** 76 77| Name| Type| Mandatory| Description| 78| -------- | -------- | -------- | -------- | 79| want | [Want](js-apis-app-ability-want.md) | Yes| [Want](js-apis-app-ability-want.md) information about the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md), including the ability name and bundle name.| 80| startId | number | Yes| Number of times the instance has been started. The initial value is **1** for the first start, and it increments automatically for subsequent starts.| 81 82**Example** 83 84```ts 85import { UIServiceExtensionAbility, Want} from '@kit.AbilityKit'; 86 87class UIServiceExt extends UIServiceExtensionAbility { 88 onRequest(want: Want, startId: number) { 89 console.info('onRequest, want:' + want.abilityName + ', startId:' + startId); 90 } 91} 92``` 93 94 95### onConnect 96 97onConnect(want: Want, proxy: UIServiceHostProxy): void 98 99Called when the connection to a [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md) is established. If the UIServiceExtensionAbility is started by calling [connectUIServiceExtensionAbility()](js-apis-inner-application-uiExtensionContext.md#connectuiserviceextensionability14), this callback will be invoked after [onCreate()](#oncreate). This callback receives a [UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md) object for communication between the client and server. 100 101**System capability**: SystemCapability.Ability.AbilityRuntime.Core 102 103**System API**: This is a system API. 104 105**Parameters** 106 107| Name| Type| Read Only| Optional| Description| 108| -------- | -------- | -------- | -------- | -------- | 109| want | [Want](js-apis-app-ability-want.md)| Yes| No| [Want](js-apis-app-ability-want.md) information about the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md), including the ability name and bundle name.| 110| proxy | [UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md) | Yes| No| [UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md) object, used for communication between the client and server.| 111 112 113**Example** 114 115```ts 116import { UIServiceExtensionAbility, Want, common} from '@kit.AbilityKit'; 117 118class UIServiceExt extends UIServiceExtensionAbility { 119 onConnect(want: Want, proxy: common.UIServiceHostProxy){ 120 console.info('onConnect, want:' + want.abilityName + ''); 121 } 122} 123``` 124 125 126### onDisconnect 127 128onDisconnect(want: Want, proxy: UIServiceHostProxy): void 129 130Called when the connection to a [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md) is interrupted. 131 132**System capability**: SystemCapability.Ability.AbilityRuntime.Core 133 134**System API**: This is a system API. 135 136**Parameters** 137 138| Name| Type| Read Only| Optional| Description| 139| -------- | -------- | -------- | -------- | -------- | 140| want |[Want](js-apis-app-ability-want.md)| Yes| No| [Want](js-apis-app-ability-want.md) information about the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md), including the ability name and bundle name.| 141| proxy |[UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md)| Yes| No| Proxy that sends data to the sender.| 142 143**Example** 144 145```ts 146import { UIServiceExtensionAbility, Want, common } from '@kit.AbilityKit'; 147 148class UIServiceExt extends UIServiceExtensionAbility { 149 onDisconnect(want: Want, proxy: common.UIServiceHostProxy) { 150 console.info('onDisconnect, want: ${want.abilityName}'); 151 } 152} 153``` 154 155 156### onWindowWillCreate 157 158onWindowWillCreate(config: window.ExtensionWindowConfig): void 159 160Called when a window will be created for the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md). Through **window.ExtensionWindowConfig** in the callback, the foreground application sends the parameters for creating the window to the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md). 161 162**System capability**: SystemCapability.Ability.AbilityRuntime.Core 163 164**System API**: This is a system API. 165 166**Parameters** 167 168| Name| Type| Read Only| Optional| Description| 169| -------- | -------- | -------- | -------- | -------- | 170| config |[window.ExtensionWindowConfig](../apis-arkui/js-apis-window-sys.md#extensionwindowconfig14)| Yes| No| Window configuration information.| 171 172**Example** 173 174```ts 175import { UIServiceExtensionAbility } from '@kit.AbilityKit'; 176import { window } from '@kit.ArkUI'; 177 178class UIServiceExt extends UIServiceExtensionAbility { 179 onWindowWillCreate(config : window.ExtensionWindowConfig){ 180 console.info('onWindowWillCreate'); 181 } 182} 183``` 184 185### onWindowDidCreate 186 187onWindowDidCreate(window: window.Window): void 188 189Called when a window is created for the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md). Through this callback, the [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md) passes the created window object to the foreground application. 190 191**System capability**: SystemCapability.Ability.AbilityRuntime.Core 192 193**System API**: This is a system API. 194 195**Parameters** 196 197| Name| Type| Read Only| Optional| Description| 198| -------- | -------- | -------- | -------- | -------- | 199| window | [window.Window](../apis-arkui/js-apis-window-sys.md#window) | Yes| No| Window object created.| 200 201**Example** 202 203```ts 204import { UIServiceExtensionAbility } from '@kit.AbilityKit'; 205import { window } from '@kit.ArkUI'; 206 207class ServiceExt extends UIServiceExtensionAbility { 208 onWindowDidCreate(window : window.Window){ 209 console.info('onWindowDidCreate'); 210 } 211} 212``` 213 214### onData 215 216onData(proxy: UIServiceHostProxy, data: Record<string, Object>): void 217 218Callback invoked when data is received. 219 220**System capability**: SystemCapability.Ability.AbilityRuntime.Core 221 222**System API**: This is a system API. 223 224**Parameters** 225 226| Name| Type| Read Only| Optional| Description| 227| -------- | -------- | -------- | -------- | -------- | 228| proxy | [UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md) | Yes| No| Proxy that sends data to the client.| 229| data | Record<string, Object> | Yes| No| Data received.| 230 231**Example** 232 233```ts 234import { UIServiceExtensionAbility, common} from '@kit.AbilityKit'; 235 236class ServiceExt extends UIServiceExtensionAbility { 237 onData(proxy : common.UIServiceHostProxy, data : Record<string, Object> ){ 238 console.info('onData'); 239 } 240} 241``` 242 243### onDestroy 244 245onDestroy(): void 246 247Called to clear resources when this [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md) is destroyed. 248 249**System capability**: SystemCapability.Ability.AbilityRuntime.Core 250 251**System API**: This is a system API. 252 253**Example** 254 255```ts 256import { UIServiceExtensionAbility } from '@kit.AbilityKit'; 257 258class ServiceExt extends UIServiceExtensionAbility { 259 onDestroy() { 260 console.info('onDestroy'); 261 } 262} 263``` 264