1# @ohos.app.ability.UIServiceExtensionAbility (UIServiceExtensionAbility) (System API) 2 3UIServiceExtensionAbility, inherited from [ExtensionAbility](js-apis-app-ability-extensionAbility.md), provides extension capabilities related to the floating window component. 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 13. 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 sub-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 23## Properties 24 25**System capability**: SystemCapability.Ability.AbilityRuntime.Core 26 27**System API**: This is a system API. 28 29| Name| Type| Read Only| Optional| Description| 30| -------- | -------- | -------- | -------- | -------- | 31| context | [UIServiceExtensionContext](js-apis-inner-application-uiserviceExtensionContext-sys.md) | Yes| No| Context environment for a [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md).| 32 33 34## UIServiceExtensionAbility.onCreate 35 36onCreate(want: Want): void 37 38Called to initialize the service logic. 39 40**System capability**: SystemCapability.Ability.AbilityRuntime.Core 41 42**System API**: This is a system API. 43 44**Parameters** 45 46| Name| Type| Read Only| Optional| Description| 47| -------- | -------- | -------- | -------- | -------- | 48| 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.| 49 50**Example** 51 52```ts 53import { UIServiceExtensionAbility, Want } from '@kit.AbilityKit'; 54 55class UIServiceExt extends UIServiceExtensionAbility { 56 // Create a UIServiceExtensionAbility. 57 onCreate(want: Want) { 58 console.log(`onCreate, want: ${want.abilityName}`); 59 } 60} 61``` 62 63 64## UIServiceExtensionAbility.onRequest 65 66onRequest(want: Want, startId: number): void 67 68Called 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#uiabilitycontextstartability) or [startUIServiceExtensionAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartuiserviceextensionability13), this callback will be invoked after [onCreate](#uiserviceextensionabilityoncreate). The value of **startId** is incremented for each UIServiceExtensionAbility that is started. 69 70**System capability**: SystemCapability.Ability.AbilityRuntime.Core 71 72**System API**: This is a system API. 73 74**Parameters** 75 76| Name| Type| Read Only| Optional| Description| 77| -------- | -------- | -------- | -------- | -------- | 78| 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.| 79| startId | number | Yes| |Number of UIServiceExtensionAbility start times. The initial value is **1**, and the value is automatically incremented for each UIServiceExtensionAbility started.| 80 81**Example** 82 83```ts 84import { UIServiceExtensionAbility, Want} from '@kit.AbilityKit'; 85 86class UIServiceExt extends UIServiceExtensionAbility { 87 onRequest(want: Want, startId: number) { 88 console.log('onRequest, want:' + want.abilityName + ', startId:' + startId); 89 } 90} 91``` 92 93 94## UIServiceExtensionAbility.onConnect 95 96onConnect(want: Want, proxy: UIServiceHostProxy): void 97 98Called 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#uiextensioncontextconnectuiserviceextensionability13), this callback will be invoked after [onCreate()](#uiserviceextensionabilityoncreate). This callback receives a [UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md) object for communication between the client and server. 99 100**System capability**: SystemCapability.Ability.AbilityRuntime.Core 101 102**System API**: This is a system API. 103 104**Parameters** 105 106| Name| Type| Read Only| Optional| Description| 107| -------- | -------- | -------- | -------- | -------- | 108| 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.| 109| 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.| 110 111 112**Example** 113 114```ts 115import { UIServiceExtensionAbility, Want, common} from '@kit.AbilityKit'; 116 117class UIServiceExt extends UIServiceExtensionAbility { 118 onConnect(want: Want, proxy: common.UIServiceHostProxy){ 119 console.log('onConnect, want:' + want.abilityName + ''); 120 } 121} 122``` 123 124 125## UIServiceExtensionAbility.onDisconnect 126 127onDisconnect(want: Want, proxy: UIServiceHostProxy): void 128 129Called when the connection to a [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md) is interrupted. 130 131**System capability**: SystemCapability.Ability.AbilityRuntime.Core 132 133**System API**: This is a system API. 134 135**Parameters** 136 137| Name| Type| Read Only| Optional| Description| 138| -------- | -------- | -------- | -------- | -------- | 139| 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.| 140| proxy |[UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md)| Yes| No| Proxy that sends data to the sender.| 141 142**Example** 143 144```ts 145import { UIServiceExtensionAbility, Want, common } from '@kit.AbilityKit'; 146 147class UIServiceExt extends UIServiceExtensionAbility { 148 onDisconnect(want: Want, proxy: common.UIServiceHostProxy) { 149 console.log('onDisconnect, want: ${want.abilityName}'); 150 } 151} 152``` 153 154 155## UIServiceExtensionAbility.onWindowWillCreate 156 157onWindowWillCreate(config: window.ExtensionWindowConfig): void 158 159Called 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). 160 161**System capability**: SystemCapability.Ability.AbilityRuntime.Core 162 163**System API**: This is a system API. 164 165**Parameters** 166 167| Name| Type| Read Only| Optional| Description| 168| -------- | -------- | -------- | -------- | -------- | 169| config |[window.ExtensionWindowConfig](../apis-arkui/js-apis-window-sys.md#extensionwindowconfig12)| Yes| No| Window configuration information.| 170 171**Example** 172 173```ts 174import { UIServiceExtensionAbility } from '@kit.AbilityKit'; 175import { window } from '@kit.ArkUI'; 176 177class UIServiceExt extends UIServiceExtensionAbility { 178 onWindowWillCreate(config : window.ExtensionWindowConfig){ 179 console.log('onWindowWillCreate'); 180 } 181} 182``` 183 184## UIServiceExtensionAbility.onWindowDidCreate 185 186onWindowDidCreate(window: window.Window): void 187 188Called 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. 189 190**System capability**: SystemCapability.Ability.AbilityRuntime.Core 191 192**System API**: This is a system API. 193 194**Parameters** 195 196| Name| Type| Read Only| Optional| Description| 197| -------- | -------- | -------- | -------- | -------- | 198| window | [window.Window](../apis-arkui/js-apis-window-sys.md#window) | Yes| No| Window object created.| 199 200**Example** 201 202```ts 203import { UIServiceExtensionAbility } from '@kit.AbilityKit'; 204import { window } from '@kit.ArkUI'; 205 206class ServiceExt extends UIServiceExtensionAbility { 207 onWindowDidCreate(window : window.Window){ 208 console.log('onWindowDidCreate'); 209 } 210} 211``` 212 213## UIServiceExtensionAbility.onData 214 215onData(proxy: UIServiceHostProxy, data: Record<string, Object>): void 216 217Callback invoked when data is received. 218 219**System capability**: SystemCapability.Ability.AbilityRuntime.Core 220 221**System API**: This is a system API. 222 223**Parameters** 224 225| Name| Type| Read Only| Optional| Description| 226| -------- | -------- | -------- | -------- | -------- | 227| proxy | [UIServiceHostProxy](js-apis-inner-application-uiservicehostproxy-sys.md) | Yes| No| Proxy that sends data to the client.| 228| data | Record<string, Object> | Yes| No| Data received.| 229 230**Example** 231 232```ts 233import { UIServiceExtensionAbility, common} from '@kit.AbilityKit'; 234 235class ServiceExt extends UIServiceExtensionAbility { 236 onData(proxy : common.UIServiceHostProxy, data : Record<string, Object> ){ 237 console.log('onData'); 238 } 239} 240``` 241 242## UIServiceExtensionAbility.onDestroy 243 244onDestroy(): void 245 246Called to clear resources when this [UIServiceExtensionAbility](js-apis-app-ability-uiServiceExtensionAbility-sys.md) is destroyed. 247 248**System capability**: SystemCapability.Ability.AbilityRuntime.Core 249 250**System API**: This is a system API. 251 252**Example** 253 254```ts 255import { UIServiceExtensionAbility } from '@kit.AbilityKit'; 256 257class ServiceExt extends UIServiceExtensionAbility { 258 onDestroy() { 259 console.log('onDestroy'); 260 } 261} 262``` 263