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