1# @ohos.ability.particleAbility (ParticleAbility模块) 2 3particleAbility模块提供了操作Service类型的Ability的能力,包括启动、停止指定的particleAbility,获取dataAbilityHelper,连接、断连指定的ServiceAbility等。 4 5> **说明:** 6> 7> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 本模块接口仅可在FA模型下使用。 9 10## 使用限制 11 12particleAbility模块用来对Data和Service类型的Ability进行操作。 13 14## 导入模块 15 16```ts 17import particleAbility from '@ohos.ability.particleAbility'; 18``` 19 20## particleAbility.startAbility 21 22startAbility(parameter: StartAbilityParameter, callback: AsyncCallback\<void>): void 23 24启动指定的particleAbility(callback形式)。 25 26使用规则: 27 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 28 - 目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 29 - 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md) 30 31**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 32 33**参数:** 34 35| 参数名 | 类型 | 必填 | 说明 | 36| --------- | ----------------------------------------------- | ---- | ----------------- | 37| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是 | 表示启动的ability | 38| callback | AsyncCallback\<void> | 是 | 以callback的形式返回启动Ability的结果 | 39 40**示例:** 41 42```ts 43import particleAbility from '@ohos.ability.particleAbility'; 44import wantConstant from '@ohos.ability.wantConstant'; 45 46particleAbility.startAbility( 47 { 48 want: 49 { 50 action: 'ohos.want.action.home', 51 entities: ['entity.system.home'], 52 type: 'MIMETYPE', 53 flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, 54 deviceId: '', 55 bundleName: 'com.example.Data', 56 abilityName: 'com.example.Data.MainAbility', 57 uri: '' 58 }, 59 }, 60 (error, result) => { 61 console.log('particleAbility startAbility errCode:' + error + 'result:' + result); 62 }, 63); 64``` 65 66## particleAbility.startAbility 67 68startAbility(parameter: StartAbilityParameter): Promise\<void>; 69 70启动指定的particleAbility(Promise形式)。 71 72使用规则: 73 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 74 - 目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 75 - 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md) 76 77**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 78 79**参数:** 80 81| 参数名 | 类型 | 必填 | 说明 | 82| --------- | ----------------------------------------------- | ---- | ----------------- | 83| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是 | 表示启动的ability | 84 85**返回值:** 86 87| 类型 | 说明 | 88| -------------- | ------------------------- | 89| Promise\<void> | Promise形式返回启动Ability的结果。 | 90 91**示例:** 92 93```ts 94import particleAbility from '@ohos.ability.particleAbility'; 95import wantConstant from '@ohos.ability.wantConstant'; 96 97particleAbility.startAbility( 98 { 99 want: 100 { 101 action: 'ohos.want.action.home', 102 entities: ['entity.system.home'], 103 type: 'MIMETYPE', 104 flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION, 105 deviceId: '', 106 bundleName: 'com.example.Data', 107 abilityName: 'com.example. Data.MainAbility', 108 uri: '' 109 }, 110 }, 111).then((data) => { 112 console.info('particleAbility startAbility'); 113}); 114``` 115 116## particleAbility.terminateSelf 117 118terminateSelf(callback: AsyncCallback\<void>): void 119 120销毁当前particleAbility(callback形式)。 121 122**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 123 124**参数:** 125 126| 参数名 | 类型 | 必填 | 说明 | 127| -------- | -------------------- | ---- | -------------------- | 128| callback | AsyncCallback\<void> | 是 | 以callback的形式返回停止当前Ability结果 | 129 130**示例:** 131 132```ts 133import particleAbility from '@ohos.ability.particleAbility'; 134 135particleAbility.terminateSelf( 136 (error, result) => { 137 console.log('particleAbility terminateSelf errCode:' + error + 'result:' + result); 138 } 139); 140``` 141 142## particleAbility.terminateSelf 143 144terminateSelf(): Promise\<void> 145 146销毁当前particleAbility(Promise形式)。 147 148**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 149 150**返回值:** 151 152| 类型 | 说明 | 153| -------------- | ------------------------- | 154| Promise\<void> | 使用Promise形式返回停止当前Ability结果。 | 155 156**示例:** 157 158```ts 159import particleAbility from '@ohos.ability.particleAbility'; 160 161particleAbility.terminateSelf().then((data) => { 162 console.info('particleAbility terminateSelf'); 163}); 164``` 165 166 167 168## particleAbility.acquireDataAbilityHelper 169 170acquireDataAbilityHelper(uri: string): DataAbilityHelper 171 172获取dataAbilityHelper对象。 173 174**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 175 176**参数:** 177 178| 参数名 | 类型 | 必填 | 说明 | 179| :--- | ------ | ---- | ------------------------ | 180| uri | string | 是 | 表示要打开的文件的路径。 | 181 182**返回值:** 183 184| 类型 | 说明 | 185| ----------------- | -------------------------------------------- | 186| [DataAbilityHelper](js-apis-inner-ability-dataAbilityHelper.md) | 用来协助其他Ability访问DataAbility的工具类。 | 187 188**示例:** 189 190```ts 191import particleAbility from '@ohos.ability.particleAbility'; 192 193let uri = ''; 194particleAbility.acquireDataAbilityHelper(uri); 195``` 196 197 198## particleAbility.startBackgroundRunning 199 200startBackgroundRunning(id: number, request: NotificationRequest, callback: AsyncCallback<void>): void; 201 202向系统申请长时任务,使用callback形式返回结果,建议使用新接口[backgroundTaskManager.startBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstartbackgroundrunning8)。 203 204**需要权限:** ohos.permission.KEEP_BACKGROUND_RUNNING 205 206**系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 207 208**参数:** 209 210 | 参数名 | 类型 | 必填 | 说明 | 211 | -------- | -------- | -------- | -------- | 212 | id | number | 是 | 长时任务通知id号 | 213 | request | [NotificationRequest](js-apis-notification.md#notificationrequest) | 是 | 通知参数,用于显示通知栏的信息 | 214 | callback | AsyncCallback<void> | 是 | callback形式返回启动长时任务的结果 | 215 216 **示例**: 217 218```ts 219import notification from '@ohos.notification'; 220import particleAbility from '@ohos.ability.particleAbility'; 221import wantAgent from '@ohos.wantAgent'; 222 223function callback(err, data) { 224 if (err) { 225 console.error('Operation failed cause: ' + JSON.stringify(err)); 226 } else { 227 console.info('Operation succeeded'); 228 } 229} 230 231let wantAgentInfo = { 232 wants: [ 233 { 234 bundleName: 'com.example.myapplication', 235 abilityName: 'com.example.myapplication.MainAbility' 236 } 237 ], 238 operationType: wantAgent.OperationType.START_ABILITY, 239 requestCode: 0, 240 wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 241}; 242 243wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { 244 let basicContent = { 245 title: 'title', 246 text: 'text' 247 }; 248 let notificationContent = { 249 contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, 250 normal: basicContent 251 }; 252 let request = { 253 content: notificationContent, 254 wantAgent: wantAgentObj 255 }; 256 let id = 1; 257 particleAbility.startBackgroundRunning(id, request, callback); 258}); 259 260``` 261 262## particleAbility.startBackgroundRunning 263 264startBackgroundRunning(id: number, request: NotificationRequest): Promise<void> 265 266**需要权限:** ohos.permission.KEEP_BACKGROUND_RUNNING 267 268**系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 269 270向系统申请长时任务,使用promise形式返回结果,建议使用新接口[backgroundTaskManager.startBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstartbackgroundrunning8-1)。 271 272**参数:** 273 274| 参数名 | 类型 | 必填 | 说明 | 275| -------- | -------- | -------- | -------- | 276| id | number | 是 | 长时任务通知id号 | 277| request | [NotificationRequest](js-apis-notification.md#notificationrequest) | 是 | 通知参数,用于显示通知栏的信息 | 278 279**返回值:** 280 281| 类型 | 说明 | 282| -------------- | ------------------------- | 283| Promise\<void> | 使用Promise形式返回启动长时任务的结果。 | 284 285**示例**: 286 287```ts 288import notification from '@ohos.notification'; 289import particleAbility from '@ohos.ability.particleAbility'; 290import wantAgent from '@ohos.wantAgent'; 291 292let wantAgentInfo = { 293 wants: [ 294 { 295 bundleName: 'com.example.myapplication', 296 abilityName: 'com.example.myapplication.MainAbility' 297 } 298 ], 299 operationType: wantAgent.OperationType.START_ABILITY, 300 requestCode: 0, 301 wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] 302}; 303 304wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { 305 let basicContent = { 306 title: 'title', 307 text: 'text' 308 }; 309 let notificationContent = { 310 contentType: notification.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, 311 normal: basicContent 312 }; 313 let request = { 314 content: notificationContent, 315 wantAgent: wantAgentObj 316 }; 317 let id = 1; 318 particleAbility.startBackgroundRunning(id, request).then(() => { 319 console.info('Operation succeeded'); 320 }).catch((err) => { 321 console.error('Operation failed cause: ' + JSON.stringify(err)); 322 }); 323}); 324 325``` 326 327## particleAbility.cancelBackgroundRunning 328 329cancelBackgroundRunning(callback: AsyncCallback<void>): void; 330 331向系统申请取消长时任务,使用callback形式返回结果,建议使用新接口[backgroundTaskManager.stopBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstopbackgroundrunning8)。 332 333**系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 334 335 **参数:** 336 337 | 参数名 | 类型 | 必填 | 说明 | 338 | -------- | -------- | -------- | -------- | 339 | callback | AsyncCallback<void> | 是 | callback形式返回取消长时任务的结果 | 340 341 **示例**: 342 343```ts 344import particleAbility from '@ohos.ability.particleAbility'; 345 346function callback(err, data) { 347 if (err) { 348 console.error('Operation failed cause: ' + JSON.stringify(err)); 349 } else { 350 console.info('Operation succeeded'); 351 } 352} 353 354particleAbility.cancelBackgroundRunning(callback); 355 356``` 357 358## particleAbility.cancelBackgroundRunning 359 360cancelBackgroundRunning(): Promise<void>; 361 362向系统申请取消长时任务,使用promise形式返回结果,建议使用新接口[backgroundTaskManager.stopBackgroundRunning](js-apis-backgroundTaskManager.md#backgroundtaskmanagerstopbackgroundrunning8-1)。 363 364**系统能力**:SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask 365 366**返回值:** 367 368| 类型 | 说明 | 369| -------------- | ------------------------- | 370| Promise\<void> | 使用Promise形式返回取消长时任务的结果。 | 371 372 **示例**: 373 374```ts 375import particleAbility from '@ohos.ability.particleAbility'; 376 377particleAbility.cancelBackgroundRunning().then(() => { 378 console.info('Operation succeeded'); 379}).catch((err) => { 380 console.error('Operation failed cause: ' + JSON.stringify(err)); 381}); 382 383``` 384 385## particleAbility.connectAbility 386 387connectAbility(request: Want, options:ConnectOptions): number 388 389将当前ability与指定的ServiceAbility进行连接(callback形式)。 390 391**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 392 393**参数:** 394 395| 参数名 | 类型 | 必填 | 说明 | 396| ------- | -------------- | ---- | ---------------------------- | 397| request | [Want](js-apis-application-want.md) | 是 | 表示被连接的ServiceAbility。 | 398| options | [ConnectOptions](js-apis-inner-ability-connectOptions.md) | 是 | 连接回调方法。 | 399 400 401**示例**: 402 403```ts 404import particleAbility from '@ohos.ability.particleAbility'; 405import rpc from '@ohos.rpc'; 406 407function onConnectCallback(element, remote) { 408 console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy)); 409} 410 411function onDisconnectCallback(element) { 412 console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId); 413} 414 415function onFailedCallback(code) { 416 console.log('particleAbilityTest ConnectAbility onFailed errCode : ' + code); 417} 418 419let connId = particleAbility.connectAbility( 420 { 421 bundleName: 'com.ix.ServiceAbility', 422 abilityName: 'ServiceAbilityA', 423 }, 424 { 425 onConnect: onConnectCallback, 426 onDisconnect: onDisconnectCallback, 427 onFailed: onFailedCallback, 428 }, 429); 430 431particleAbility.disconnectAbility(connId).then((data) => { 432 console.log(' data: ' + data); 433}).catch((error) => { 434 console.log('particleAbilityTest result errCode : ' + error.code); 435}); 436``` 437 438## particleAbility.disconnectAbility 439 440disconnectAbility(connection: number, callback:AsyncCallback\<void>): void; 441 442断开当前ability与指定ServiceAbility的连接(callback形式)。 443 444**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 445 446**参数:** 447 448 | 参数名 | 类型 | 必填 | 说明 | 449 | -------- | -------- | -------- | -------- | 450 | callback | AsyncCallback<void> | 是 | callback形式返回断开连接的结果 | 451 452**示例**: 453 454```ts 455import particleAbility from '@ohos.ability.particleAbility'; 456import rpc from '@ohos.rpc'; 457 458function onConnectCallback(element, remote) { 459 console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy)); 460} 461 462function onDisconnectCallback(element) { 463 console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId); 464} 465 466function onFailedCallback(code) { 467 console.log('particleAbilityTest ConnectAbility onFailed errCode : ' + code); 468} 469 470let connId = particleAbility.connectAbility( 471 { 472 bundleName: 'com.ix.ServiceAbility', 473 abilityName: 'ServiceAbilityA', 474 }, 475 { 476 onConnect: onConnectCallback, 477 onDisconnect: onDisconnectCallback, 478 onFailed: onFailedCallback, 479 }, 480); 481 482particleAbility.disconnectAbility(connId, (err) => { 483 console.log('particleAbilityTest disconnectAbility err====>' 484 + ('json err=') + JSON.stringify(err)); 485}); 486``` 487 488 489## particleAbility.disconnectAbility 490 491disconnectAbility(connection: number): Promise\<void>; 492 493断开当前ability与指定ServiceAbility的连接(Promise形式)。 494 495**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 496 497**返回值:** 498 499| 类型 | 说明 | 500| -------------- | ------------------------- | 501| Promise\<void> | 使用Promise形式返回结果。 | 502 503**示例**: 504 505```ts 506import particleAbility from '@ohos.ability.particleAbility'; 507import rpc from '@ohos.rpc'; 508 509function onConnectCallback(element, remote) { 510 console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy)); 511} 512 513function onDisconnectCallback(element) { 514 console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId); 515} 516 517function onFailedCallback(code) { 518 console.log('particleAbilityTest ConnectAbility onFailed errCode : ' + code); 519} 520 521let connId = particleAbility.connectAbility( 522 { 523 bundleName: 'com.ix.ServiceAbility', 524 abilityName: 'ServiceAbilityA', 525 }, 526 { 527 onConnect: onConnectCallback, 528 onDisconnect: onDisconnectCallback, 529 onFailed: onFailedCallback, 530 }, 531); 532 533particleAbility.disconnectAbility(connId).then((data) => { 534 console.log(' data: ' + data); 535}).catch((error) => { 536 console.log('particleAbilityTest result errCode : ' + error.code); 537}); 538 539``` 540 541## ErrorCode 542 543表示错误码。 544 545**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel 546 547| 名称 | 值 | 说明 | 548| ----------------------------- | ---- | ------------------------------------------------------------ | 549| INVALID_PARAMETER | -1 | 无效的参数。 | 550