1# UIServiceExtensionConnectCallback 2 3UIServiceExtensionConnectCallback是UIServiceExtension连接回调接口类,提供UIServiceExtension连接回调数据能力。 4 5 6> **说明:** 7> 8> - 本模块首批接口从API version 14开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 9> - 本模块接口仅可在Stage模型下使用。 10> - 本模块接口需要在主线程中使用,不要在Worker、TaskPool等子线程中使用。 11 12## 导入模块 13 14```ts 15import { common } from '@kit.AbilityKit'; 16``` 17 18## UIServiceExtensionConnectCallback.onData 19 20 onData(data: Record<string, Object>): void 21 22接收UIServiceExtension连接的回调数据。 23 24> **说明:** 25> 26> 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 27> 28 29**原子化服务API**:从 API version 14开始,该接口支持在原子化服务中使用。 30 31**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 32 33**参数:** 34 35| 参数名 | 类型 | 必填 | 说明 | 36| ------ | ---------------------- | ---- | ------------ | 37| data | Record<string, Object> | 是 | 接收UIServiceExtension连接回调数据。 | 38 39**示例:** 40 41```ts 42import { common, Want } from '@kit.AbilityKit'; 43import { BusinessError } from '@kit.BasicServicesKit'; 44 45const TAG: string = '[Extension] '; 46 47@Entry 48@Component 49struct UIServiceExtensionAbility { 50 comProxy: common.UIServiceProxy | null = null; 51 dataCallBack: common.UIServiceExtensionConnectCallback = { 52 onData: (data: Record<string, Object>) => { 53 console.log(TAG + `dataCallBack received data: `, JSON.stringify(data)); 54 }, 55 onDisconnect: () => { 56 console.log(TAG + `dataCallBack onDisconnect`); 57 this.comProxy = null; 58 } 59 } 60 61 build() { 62 Scroll() { 63 Column() { 64 // 创建一个按钮,点击按钮后连接UIServiceExtensionAbility 65 Button('connectUIServiceExtensionAbility', { type: ButtonType.Capsule, stateEffect: true }) 66 .margin({ 67 top: 5, 68 left: 10, 69 right: 10, 70 bottom: 5 71 }) 72 .alignRules({ 73 center: { anchor: '__container__', align: VerticalAlign.Center }, 74 middle: { anchor: '__container__', align: HorizontalAlign.Center } 75 }) 76 .onClick(() => { 77 this.myConnectUIServiceExtensionAbility() 78 }); 79 } 80 .width('100%') 81 } 82 .height('100%') 83 } 84 85 myConnectUIServiceExtensionAbility() { 86 // 获取上下文 87 let context = getContext(this) as common.UIAbilityContext; 88 let startWant: Want = { 89 deviceId: '', 90 bundleName: 'com.acts.myapplication', 91 abilityName: 'UiServiceExtensionAbility' 92 }; 93 94 try { 95 // 连接到UIServiceExtensionAbility 96 context.connectUIServiceExtensionAbility(startWant, this.dataCallBack) 97 .then((proxy: common.UIServiceProxy) => { 98 console.log(TAG + `try to connectUIServiceExtensionAbility ${proxy}}`); 99 this.comProxy = proxy; 100 let formData: Record<string,string> = { 101 'PATH': '/tmp/aaa.jpg' 102 }; 103 try { 104 console.log(TAG + `sendData`); 105 this.comProxy.sendData(formData); 106 } catch (err) { 107 let code = (err as BusinessError).code; 108 let message = (err as BusinessError).message; 109 console.log(TAG + `sendData failed, code is ${code}, message is ${message}`); 110 } 111 }).catch((err: Error) => { 112 let code = (err as BusinessError).code; 113 let message = (err as BusinessError).message; 114 console.log(TAG + `connectUIServiceExtensionAbility failed, code is ${code}, message is ${message}`); 115 }); 116 } catch (err) { 117 let code = (err as BusinessError).code; 118 let message = (err as BusinessError).message; 119 console.log(TAG + `connectUIServiceExtensionAbility failed, code is ${code}, message is ${message}`); 120 } 121 } 122} 123``` 124 125## UIServiceExtensionConnectCallback.onDisconnect 126 127onDisconnect(): void 128 129成功断开UIServiceExtension连接的回调。 130 131> **说明:** 132> 133> 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)。 134> 135 136**原子化服务API**:从 API version 14开始,该接口支持在原子化服务中使用。 137 138**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 139 140**示例:** 141```ts 142import { common } from '@kit.AbilityKit'; 143import { BusinessError } from '@kit.BasicServicesKit'; 144 145const TAG: string = '[Extension] '; 146 147@Entry 148@Component 149struct UIServiceExtensionAbility { 150 comProxy: common.UIServiceProxy | null = null; 151 // 链接时的回调接口 152 dataCallBack: common.UIServiceExtensionConnectCallback = { 153 onData: (data: Record<string, Object>) => { 154 console.log(TAG + `dataCallBack received data: `, JSON.stringify(data)); 155 }, 156 onDisconnect: () => { 157 // 链接断链后的触发 158 console.log(TAG + `dataCallBack onDisconnect`); 159 this.comProxy = null; 160 } 161 } 162 163 build() { 164 Scroll() { 165 Column() { 166 // 创建一个按钮,点击后断开已连接的UIServiceExtensionAbility 167 Button('disConnectUIServiceExtensionAbility', { type: ButtonType.Capsule, stateEffect: true }) 168 .margin({ 169 top: 5, 170 left: 10, 171 right: 10, 172 bottom: 5 173 }) 174 .alignRules({ 175 center: { anchor: '__container__', align: VerticalAlign.Center }, 176 middle: { anchor: '__container__', align: HorizontalAlign.Center } 177 }) 178 .onClick(() => { 179 this.myConnectUIServiceExtensionAbility() 180 }); 181 } 182 .width('100%') 183 } 184 .height('100%') 185 } 186 187 myConnectUIServiceExtensionAbility() { 188 // 获取上下文 189 let context = getContext(this) as common.UIAbilityContext; 190 // 断开链接的UIServiceExtensionAbility 191 try { 192 // this.comProxy在链接成功后保存 193 context.disconnectUIServiceExtensionAbility(this.comProxy).then(() => { 194 console.log(TAG + `disconnectUIServiceExtensionAbility success`); 195 }).catch((err: Error) => { 196 let code = (err as BusinessError).code; 197 let message = (err as BusinessError).message; 198 console.log(TAG + `disconnectUIServiceExtensionAbility failed, code is ${code}, message is ${message}`); 199 }); 200 } catch (err) { 201 let code = (err as BusinessError).code; 202 let message = (err as BusinessError).message; 203 console.log(TAG + `disconnectUIServiceExtensionAbility failed, code is ${code}, message is ${message}`); 204 } 205 } 206} 207``` 208 209