js-apis-ability-featureAbility.md 33.2 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.ability.featureAbility (FeatureAbility模块)
M
m00512953 已提交
2

M
m00512953 已提交
3
FeatureAbility模块提供与用户进行交互的Ability的能力,包括启动新的Ability、停止Ability、获取dataAbilityHelper对象、获取当前Ability对应的窗口,连接断连Service等。
M
m00512953 已提交
4 5 6 7 8 9 10 11

> **说明:**
> 
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。  
> 本模块接口仅可在FA模型下使用。

## 使用限制

M
m00512953 已提交
12
FeatureAbility模块的接口只能在Page类型的Ability中调用
M
m00512953 已提交
13 14 15 16 17 18 19 20 21 22 23

## 导入模块

```ts
import featureAbility from '@ohos.ability.featureAbility';
```

## featureAbility.startAbility

startAbility(parameter: StartAbilityParameter, callback: AsyncCallback\<number>): void

M
m00512953 已提交
24
启动新的Ability(callback形式)。
M
m00512953 已提交
25

M
m00512953 已提交
26 27
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
28
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
29 30
 - 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)

M
m00512953 已提交
31 32 33 34 35 36 37
**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名        | 类型                                       | 必填   | 说明             |
| --------- | ---------------------------------------- | ---- | -------------- |
| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是    | 表示被启动的Ability。 |
M
m00512953 已提交
38
| callback  | AsyncCallback\<number>                   | 是    | 以callback的形式返回启动Ability的结果。      |
M
m00512953 已提交
39 40 41 42 43

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
M
mingxihua 已提交
44
import wantConstant from '@ohos.app.ability.wantConstant';
M
m00512953 已提交
45 46 47 48
featureAbility.startAbility(
    {
        want:
        {
M
mingxihua 已提交
49 50 51
            action: '',
            entities: [''],
            type: '',
M
m00512953 已提交
52
            flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
M
mingxihua 已提交
53 54
            deviceId: '',
            bundleName: 'com.example.myapplication',
M
m00512953 已提交
55
            /* FA模型中abilityName由package + Ability name组成 */
M
mingxihua 已提交
56 57
            abilityName: 'com.example.myapplication.secondAbility',
            uri: ''
M
m00512953 已提交
58 59
        },
    },
M
mingxihua 已提交
60 61 62 63 64 65
    (error, data) => {
        if (error && error.code !== 0) {
            console.error('startAbility fail, error: ${JSON.stringify(error)}');
        } else {
            console.log('startAbility success, data: ${JSON.stringify(data)}');
        }
M
m00512953 已提交
66 67 68 69 70 71 72 73 74 75
    }
);
```



## featureAbility.startAbility

startAbility(parameter: StartAbilityParameter): Promise\<number>

M
m00512953 已提交
76
启动新的Ability(Promise形式)。
M
m00512953 已提交
77

M
m00512953 已提交
78 79
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
80
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
81 82
 - 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)

M
m00512953 已提交
83 84 85 86 87 88 89 90
**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名        | 类型                                       | 必填   | 说明             |
| --------- | ---------------------------------------- | ---- | -------------- |
| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是    | 表示被启动的Ability。 |

M
m00512953 已提交
91 92 93 94 95 96
**返回值:**

| 类型                                       | 说明      |
| ---------------------------------------- | ------- |
| Promise\<number> | Promise形式返回启动Ability结果。 |

M
m00512953 已提交
97 98 99 100
**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
M
mingxihua 已提交
101
import wantConstant from '@ohos.app.ability.wantConstant';
M
m00512953 已提交
102 103 104 105
featureAbility.startAbility(
    {
        want:
        {
M
mingxihua 已提交
106 107 108
            action: 'action.system.home',
            entities: ['entity.system.home'],
            type: 'MIMETYPE',
M
m00512953 已提交
109
            flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
M
mingxihua 已提交
110 111
            deviceId: '',
            bundleName: 'com.example.myapplication',
M
m00512953 已提交
112
            /* FA模型中abilityName由package + Ability name组成 */
M
mingxihua 已提交
113 114
            abilityName: 'com.example.myapplication.secondAbility',
            uri: ''
M
m00512953 已提交
115 116 117
        },
    }
).then((data) => {
M
mingxihua 已提交
118
    console.info('startAbility data: ${JSON.stringify(data)}');
M
m00512953 已提交
119 120 121 122 123 124 125
});
```

## featureAbility.acquireDataAbilityHelper<sup>7+</sup>

acquireDataAbilityHelper(uri: string): DataAbilityHelper

M
m00512953 已提交
126
获取dataAbilityHelper对象。
M
m00512953 已提交
127

M
m00512953 已提交
128 129 130
使用规则:
 - 跨应用访问dataAbility,对端应用需配置关联启动
 - 调用方应用位于后台时,使用该接口访问dataAbility需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
131
 - 跨应用场景下,目标dataAbility的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
132 133
 - 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)

M
m00512953 已提交
134 135 136 137 138 139
**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名   | 类型     | 必填   | 说明           |
| ---- | ------ | ---- | ------------ |
M
m00512953 已提交
140
| uri  | string | 是    | 表示要打开的文件的路径。 |
M
m00512953 已提交
141 142 143 144 145

**返回值:**

| 类型                | 说明                              |
| ----------------- | ------------------------------- |
M
m00512953 已提交
146
| [DataAbilityHelper](js-apis-inner-ability-dataAbilityHelper.md) | 用来协助其他Ability访问DataAbility的工具类。 |
M
m00512953 已提交
147 148 149 150 151

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
M
mingxihua 已提交
152
let dataAbilityHelper = featureAbility.acquireDataAbilityHelper(
M
mingxihua 已提交
153
    'dataability:///com.example.DataAbility'
M
m00512953 已提交
154 155 156 157 158 159 160
);
```

## featureAbility.startAbilityForResult<sup>7+</sup>

startAbilityForResult(parameter: StartAbilityParameter, callback: AsyncCallback\<AbilityResult>): void

M
mingxihua 已提交
161
启动一个Ability。Ability被启动后,有如下情况(callback形式):
M
mingxihua 已提交
162
 - 正常情况下可通过调用[terminateSelfWithResult](#featureabilityterminateselfwithresult7)接口使之终止并且返回结果给调用方。
M
mingxihua 已提交
163
 - 异常情况下比如杀死Ability会返回异常信息给调用方, 异常信息中resultCode为-1。
M
mingxihua 已提交
164
 - 如果被启动的Ability模式是单实例模式, 不同应用多次调用该接口启动这个Ability,当这个Ability调用[terminateSelfWithResult](#featureabilityterminateselfwithresult7)接口使之终止时,只将正常结果返回给最后一个调用方, 其它调用方返回异常信息, 异常信息中resultCode为-1。
M
m00512953 已提交
165

M
m00512953 已提交
166 167
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
168
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
169 170
 - 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)

M
m00512953 已提交
171 172 173 174 175 176 177
**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名        | 类型                                       | 必填   | 说明             |
| --------- | ---------------------------------------- | ---- | -------------- |
| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是    | 表示被启动的Ability。 |
M
m00512953 已提交
178
| callback  | AsyncCallback\<[AbilityResult](js-apis-inner-ability-abilityResult.md)> | 是    | 以callback的形式返回启动Ability结果。      |
M
m00512953 已提交
179 180 181 182 183

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
M
mingxihua 已提交
184
import wantConstant from '@ohos.app.ability.wantConstant';
M
m00512953 已提交
185 186 187 188
featureAbility.startAbilityForResult(
   {
        want:
        {
M
mingxihua 已提交
189 190 191
            action: 'action.system.home',
            entities: ['entity.system.home'],
            type: 'MIMETYPE',
M
m00512953 已提交
192
            flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
M
mingxihua 已提交
193 194
            deviceId: '',
            bundleName: 'com.example.myapplication',
M
m00512953 已提交
195
            /* FA模型中abilityName由package + Ability name组成 */
M
mingxihua 已提交
196 197
            abilityName: 'com.example.myapplication.secondAbility',
            uri:''
M
m00512953 已提交
198 199
        },
    },
M
mingxihua 已提交
200 201 202 203 204 205
    (error, data) => {
        if (error && error.code !== 0) {
            console.error('startAbilityForResult fail, error: ${JSON.stringify(error)}');
        } else {
            console.log('startAbilityForResult success, data: ${JSON.stringify(data)}');
        }
M
m00512953 已提交
206 207 208 209 210 211 212 213
    }
);
```

## featureAbility.startAbilityForResult<sup>7+</sup>

startAbilityForResult(parameter: StartAbilityParameter): Promise\<AbilityResult>

M
mingxihua 已提交
214
启动一个Ability。Ability被启动后,有如下情况(Promise形式):
M
mingxihua 已提交
215
 - 正常情况下可通过调用[terminateSelfWithResult](#featureabilityterminateselfwithresult7)接口使之终止并且返回结果给调用方。
M
mingxihua 已提交
216
 - 异常情况下比如杀死Ability会返回异常信息给调用方, 异常信息中resultCode为-1。
M
mingxihua 已提交
217
 - 如果被启动的Ability模式是单实例模式, 不同应用多次调用该接口启动这个Ability,当这个Ability调用[terminateSelfWithResult](#featureabilityterminateselfwithresult7)接口使之终止时,只将正常结果返回给最后一个调用方, 其它调用方返回异常信息, 异常信息中resultCode为-1。
M
m00512953 已提交
218

M
m00512953 已提交
219 220
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
221
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
222 223
 - 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)

M
m00512953 已提交
224 225 226 227 228 229 230 231 232 233 234 235
**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名        | 类型                                       | 必填   | 说明            |
| --------- | ---------------------------------------- | ---- | ------------- |
| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是    | 表示被启动的Ability |

**返回值:**

| 类型                                       | 说明      |
| ---------------------------------------- | ------- |
M
m00512953 已提交
236
| Promise\<[AbilityResult](js-apis-inner-ability-abilityResult.md)> | Promise形式返回启动Ability结果。 |
M
m00512953 已提交
237 238 239 240 241

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
M
mingxihua 已提交
242
import wantConstant from '@ohos.app.ability.wantConstant';
M
m00512953 已提交
243 244 245 246
featureAbility.startAbilityForResult(
    {
        want:
        {
M
mingxihua 已提交
247 248 249
            action: 'action.system.home',
            entities: ['entity.system.home'],
            type: 'MIMETYPE',
M
m00512953 已提交
250
            flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
M
mingxihua 已提交
251 252
            deviceId: '',
            bundleName: 'com.example.myapplication',
M
m00512953 已提交
253
            /* FA模型中abilityName由package + Ability name组成 */
M
mingxihua 已提交
254 255
            abilityName: 'com.example.myapplication.secondAbility',
            uri:'',
M
m00512953 已提交
256 257 258 259
            parameters:
            {
                mykey0: 1111,
                mykey1: [1, 2, 3],
M
mingxihua 已提交
260 261
                mykey2: '[1, 2, 3]',
                mykey3: 'xxxxxxxxxxxxxxxxxxxxxx',
M
m00512953 已提交
262 263
                mykey4: [1, 15],
                mykey5: [false, true, false],
M
mingxihua 已提交
264
                mykey6: ['aaaaaa', 'bbbbb', 'ccccccccccc'],
M
m00512953 已提交
265 266 267 268 269
                mykey7: true,
            },
        },
    },
).then((data) => {
M
mingxihua 已提交
270
    console.info('startAbilityForResult data: ${JSON.stringify(data)}');
M
m00512953 已提交
271 272 273 274 275 276 277
});
```

## featureAbility.terminateSelfWithResult<sup>7+</sup>

terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback\<void>): void

M
m00512953 已提交
278
停止当前的Ability。如果该Ability是通过调用[startAbilityForResult](#featureabilitystartabilityforresult7)接口被拉起的,调用terminateSelfWithResult接口时会将结果返回给调用者,如果该Ability不是通过调用[startAbilityForResult](#featureabilitystartabilityforresult7)接口被拉起的,调用terminateSelfWithResult接口时不会有结果返回给调用者(callback形式)。
M
m00512953 已提交
279 280 281 282 283 284 285

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名        | 类型                              | 必填   | 说明             |
| --------- | ------------------------------- | ---- | -------------- |
M
m00512953 已提交
286 287
| parameter | [AbilityResult](js-apis-inner-ability-abilityResult.md) | 是    | 表示停止Ability之后返回的结果。 |
| callback  | AsyncCallback\<void>            | 是    | 以callback的形式返回停止Ability结果。      |
M
m00512953 已提交
288 289 290 291 292

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
M
mingxihua 已提交
293
import wantConstant from '@ohos.app.ability.wantConstant';
M
m00512953 已提交
294 295 296 297 298
featureAbility.terminateSelfWithResult(
    {
        resultCode: 1,
        want:
        {
M
mingxihua 已提交
299 300 301
            action: 'action.system.home',
            entities: ['entity.system.home'],
            type: 'MIMETYPE',
M
m00512953 已提交
302
            flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
M
mingxihua 已提交
303 304
            deviceId: '',
            bundleName: 'com.example.myapplication',
M
m00512953 已提交
305
            /* FA模型中abilityName由package + Ability name组成 */
M
mingxihua 已提交
306 307
            abilityName: 'com.example.myapplication.secondAbility',
            uri:'',
M
m00512953 已提交
308 309 310
            parameters: {
                mykey0: 2222,
                mykey1: [1, 2, 3],
M
mingxihua 已提交
311 312
                mykey2: '[1, 2, 3]',
                mykey3: 'ssssssssssssssssssssssssss',
M
m00512953 已提交
313 314
                mykey4: [1, 15],
                mykey5: [false, true, false],
M
mingxihua 已提交
315
                mykey6: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'],
M
m00512953 已提交
316 317 318 319
                mykey7: true,
            }
        },
    },
M
mingxihua 已提交
320 321
    (error) => {
        console.error('error: ${JSON.stringify(error)}');
M
m00512953 已提交
322 323 324 325 326 327 328 329
    }
);
```

## featureAbility.terminateSelfWithResult<sup>7+</sup>

terminateSelfWithResult(parameter: AbilityResult): Promise\<void>

M
m00512953 已提交
330
停止当前的Ability。如果该Ability是通过调用[startAbilityForResult](#featureabilitystartabilityforresult7)接口被拉起的,调用terminateSelfWithResult接口时会将结果返回给调用者,如果该Ability不是通过调用[startAbilityForResult](#featureabilitystartabilityforresult7)接口被拉起的,调用terminateSelfWithResult接口时不会有结果返回给调用者(Promise形式)。
M
m00512953 已提交
331 332 333 334 335 336 337

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名        | 类型                              | 必填   | 说明            |
| --------- | ------------------------------- | ---- | ------------- |
M
m00512953 已提交
338
| parameter | [AbilityResult](js-apis-inner-ability-abilityResult.md) | 是    | 表示停止Ability之后返回的结果 |
M
m00512953 已提交
339 340 341 342 343

**返回值:**

| 类型             | 说明              |
| -------------- | --------------- |
M
m00512953 已提交
344
| Promise\<void> | 以Promise形式返回停止当前Ability结果。 |
M
m00512953 已提交
345 346 347 348 349

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
M
mingxihua 已提交
350
import wantConstant from '@ohos.app.ability.wantConstant';
M
m00512953 已提交
351 352 353 354 355
featureAbility.terminateSelfWithResult(
    {
        resultCode: 1,
        want:
        {
M
mingxihua 已提交
356 357 358
            action: 'action.system.home',
            entities: ['entity.system.home'],
            type: 'MIMETYPE',
M
m00512953 已提交
359
            flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
M
mingxihua 已提交
360 361
            deviceId: '',
            bundleName: 'com.example.myapplication',
M
m00512953 已提交
362
            /* FA模型中abilityName由package + Ability name组成 */
M
mingxihua 已提交
363 364
            abilityName: 'com.example.myapplication.secondAbility',
            uri:'',
M
m00512953 已提交
365 366 367
            parameters: {
                mykey0: 2222,
                mykey1: [1, 2, 3],
M
mingxihua 已提交
368 369
                mykey2: '[1, 2, 3]',
                mykey3: 'ssssssssssssssssssssssssss',
M
m00512953 已提交
370 371
                mykey4: [1, 15],
                mykey5: [false, true, false],
M
mingxihua 已提交
372
                mykey6: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'],
M
m00512953 已提交
373 374 375 376 377
                mykey7: true,
            }
        },
    }
).then((data) => {
M
mingxihua 已提交
378
    console.info('==========================>terminateSelfWithResult=======================>');
M
m00512953 已提交
379 380 381 382 383 384 385 386 387 388 389 390 391 392 393
});
```

## featureAbility.hasWindowFocus<sup>7+<sup>

hasWindowFocus(callback: AsyncCallback\<boolean>): void

检查Ability的主窗口是否具有窗口焦点(callback形式)。

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名       | 类型                      | 必填   | 说明                                       |
| -------- | ----------------------- | ---- | ---------------------------------------- |
M
m00512953 已提交
394
| callback | AsyncCallback\<boolean> | 是    | 以callback的形式返回结果。<br>如果此Ability当前具有视窗焦点,则返回true;否则返回false。 |
M
m00512953 已提交
395 396 397 398 399

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
M
mingxihua 已提交
400 401 402 403 404 405
featureAbility.hasWindowFocus((error, data) => {
    if (error && error.code !== 0) {
        console.error('hasWindowFocus fail, error: ${JSON.stringify(error)}');
    } else {
        console.log('hasWindowFocus success, data: ${JSON.stringify(data)}');
    }
M
m00512953 已提交
406 407 408 409 410 411 412 413 414 415 416 417 418 419 420
});
```

## featureAbility.hasWindowFocus<sup>7+<sup>

hasWindowFocus(): Promise\<boolean>

检查Ability的主窗口是否具有窗口焦点(Promise形式)。

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**返回值:**

| 类型                | 说明                                    |
| ----------------- | ------------------------------------- |
M
m00512953 已提交
421
| Promise\<boolean> | Promise形式返回结果,如果此Ability当前具有视窗焦点,则返回true;否则返回false。 |
M
m00512953 已提交
422 423 424 425 426 427

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
featureAbility.hasWindowFocus().then((data) => {
M
mingxihua 已提交
428
    console.info('hasWindowFocus data: ${JSON.stringify(data)}');
M
m00512953 已提交
429 430 431 432 433 434 435
});
```

## featureAbility.getWant

getWant(callback: AsyncCallback\<Want>): void

M
m00512953 已提交
436
获取要拉起的Ability对应的Want(callback形式)。
M
m00512953 已提交
437 438 439 440 441 442 443

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名       | 类型                            | 必填   | 说明        |
| -------- | ----------------------------- | ---- | --------- |
M
m00512953 已提交
444
| callback | AsyncCallback\<[Want](js-apis-application-want.md)> | 是    | 以callback的形式返回want。 |
M
m00512953 已提交
445 446 447 448 449

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
M
mingxihua 已提交
450 451 452 453 454 455
featureAbility.getWant((error, data) => {
    if (error && error.code !== 0) {
        console.error('getWant fail, error: ${JSON.stringify(error)}');
    } else {
        console.log('getWant success, data: ${JSON.stringify(data)}');
    }
M
m00512953 已提交
456 457 458 459 460 461 462
});
```

## featureAbility.getWant

getWant(): Promise\<Want>

M
m00512953 已提交
463
获取要拉起的Ability对应的Want(Promise形式)。
M
m00512953 已提交
464 465 466 467 468 469 470

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**返回值:**

| 类型                      | 说明               |
| ----------------------- | ---------------- |
M
m00512953 已提交
471
| Promise\<[Want](js-apis-application-want.md)> | 以Promise的形式返回want。 |
M
m00512953 已提交
472 473 474 475 476 477

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
featureAbility.getWant().then((data) => {
M
mingxihua 已提交
478
    console.info('getWant data: ${JSON.stringify(data)}');
M
m00512953 已提交
479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499
});
```

## featureAbility.getContext

getContext(): Context

获取应用上下文。

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**返回值:**

| 类型      | 说明         |
| ------- | ---------- |
| Context | 返回应用程序上下文。 |

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
M
mingxihua 已提交
500
let context = featureAbility.getContext();
M
mingxihua 已提交
501 502 503 504 505 506
context.getBundleName((error, data) => {
    if (error && error.code !== 0) {
        console.error('getBundleName fail, error: ${JSON.stringify(error)}');
    } else {
        console.log('getBundleName success, data: ${JSON.stringify(data)}');
    }
M
m00512953 已提交
507 508 509 510 511 512 513
});
```

## featureAbility.terminateSelf<sup>7+</sup>

terminateSelf(callback: AsyncCallback\<void>): void

M
m00512953 已提交
514
停止当前的Ability(callback形式)。
M
m00512953 已提交
515 516 517 518 519 520 521

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名       | 类型                   | 必填   | 说明       |
| -------- | -------------------- | ---- | -------- |
M
m00512953 已提交
522
| callback | AsyncCallback\<void> | 是    | 以callback的形式返回停止当前Ability结果 |
M
m00512953 已提交
523 524 525 526 527 528

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
featureAbility.terminateSelf(
M
mingxihua 已提交
529 530
    (error) => {
        console.error('error: ${JSON.stringify(error)}');
M
m00512953 已提交
531 532 533 534 535 536 537 538
    }
)
```

## featureAbility.terminateSelf<sup>7+</sup>

terminateSelf(): Promise\<void>

M
m00512953 已提交
539
停止当前的Ability(Promise形式)。
M
m00512953 已提交
540 541 542 543 544 545 546

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**返回值:**

| 类型             | 说明               |
| -------------- | ---------------- |
M
m00512953 已提交
547
| Promise\<void> | 以Promise的形式返回停止当前Ability结果。 |
M
m00512953 已提交
548 549 550 551 552 553

**示例:**

```ts
import featureAbility from '@ohos.ability.featureAbility';
featureAbility.terminateSelf().then((data) => {
M
mingxihua 已提交
554
    console.info('==========================>terminateSelf=======================>');
M
m00512953 已提交
555 556 557 558 559 560 561
});
```

## featureAbility.connectAbility<sup>7+</sup>

connectAbility(request: Want, options:ConnectOptions): number

M
m00512953 已提交
562
将当前Ability与指定的ServiceAbility进行连接。
M
m00512953 已提交
563

M
m00512953 已提交
564 565 566
使用规则:
 - 跨应用连接serviceAbility,对端应用需配置关联启动
 - 调用方应用位于后台时,使用该接口连接serviceAbility需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
567
 - 跨应用场景下,目标serviceAbility的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
568 569
 - 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)

M
m00512953 已提交
570 571 572 573 574 575 576
**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名      | 类型             | 必填   | 说明                    |
| ------- | -------------- | ---- | --------------------- |
| request | [Want](js-apis-application-want.md)  | 是    | 表示被连接的ServiceAbility。 |
M
m00512953 已提交
577
| options | [ConnectOptions](js-apis-inner-ability-connectOptions.md) | 是    | 表示连接回调函数。             |
M
m00512953 已提交
578 579 580 581 582

**返回值:**

| 类型     | 说明                   |
| ------ | -------------------- |
M
mingxihua 已提交
583
| number | 连接的ServiceAbility的ID(ID从0开始自增,每连接成功一次ID加1)。 |
M
m00512953 已提交
584 585 586 587 588 589 590

**示例:**

```ts
import rpc from '@ohos.rpc';
import featureAbility from '@ohos.ability.featureAbility';
function onConnectCallback(element, remote){
M
mingxihua 已提交
591
    console.log('ConnectAbility onConnect remote is proxy: ${(remote instanceof rpc.RemoteProxy)}');
M
m00512953 已提交
592 593
}
function onDisconnectCallback(element){
M
mingxihua 已提交
594
    console.log('ConnectAbility onDisconnect element.deviceId : ${element.deviceId}')
M
m00512953 已提交
595 596
}
function onFailedCallback(code){
M
mingxihua 已提交
597
    console.error('featureAbilityTest ConnectAbility onFailed errCode : ${code}')
M
m00512953 已提交
598
}
M
mingxihua 已提交
599
let connectId = featureAbility.connectAbility(
M
m00512953 已提交
600
    {
M
mingxihua 已提交
601 602 603
        deviceId: '',
        bundleName: 'com.ix.ServiceAbility',
        abilityName: 'com.ix.ServiceAbility.ServiceAbilityA',
M
m00512953 已提交
604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624
    },
    {
        onConnect: onConnectCallback,
        onDisconnect: onDisconnectCallback,
        onFailed: onFailedCallback,
    },
);
```

## featureAbility.disconnectAbility<sup>7+</sup>

disconnectAbility(connection: number, callback:AsyncCallback\<void>): void

断开与指定ServiceAbility的连接(callback形式)。

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名         | 类型                   | 必填   | 说明                      |
| ---------- | -------------------- | ---- | ----------------------- |
M
m00512953 已提交
625 626
| connection | number               | 是    | 表示断开连接的ServiceAbility的ID |
| callback   | AsyncCallback\<void> | 是    | 以callback的形式返回断开连接结果                |
M
m00512953 已提交
627 628 629 630 631 632 633

**示例:**

```ts
import rpc from '@ohos.rpc';
import featureAbility from '@ohos.ability.featureAbility';
function onConnectCallback(element, remote){
M
mingxihua 已提交
634
    console.log('ConnectAbility onConnect remote is proxy: ${(remote instanceof rpc.RemoteProxy)}');
M
m00512953 已提交
635 636
}
function onDisconnectCallback(element){
M
mingxihua 已提交
637
    console.log('ConnectAbility onDisconnect element.deviceId : ${element.deviceId}');
M
m00512953 已提交
638 639
}
function onFailedCallback(code){
M
mingxihua 已提交
640
    console.error('featureAbilityTest ConnectAbility onFailed errCode : ${code}');
M
m00512953 已提交
641
}
M
mingxihua 已提交
642
let connectId = featureAbility.connectAbility(
M
m00512953 已提交
643
    {
M
mingxihua 已提交
644 645
        bundleName: 'com.ix.ServiceAbility',
        abilityName: 'com.ix.ServiceAbility.ServiceAbilityA',
M
m00512953 已提交
646 647 648 649 650 651 652
    },
    {
        onConnect: onConnectCallback,
        onDisconnect: onDisconnectCallback,
        onFailed: onFailedCallback,
    },
);
H
HuangXW 已提交
653

M
mingxihua 已提交
654 655 656 657 658 659
featureAbility.disconnectAbility(connectId, (error) => {
    if (error && error.code !== 0) {
        console.error('disconnectAbility fail, connectId: ${connectId}, error: ${JSON.stringify(error)}');
    } else {
        console.log('disconnectAbility success, connectId: ${connectId}');
    }
H
HuangXW 已提交
660
});
M
m00512953 已提交
661 662 663 664 665 666 667 668 669 670 671 672 673 674
```

## featureAbility.disconnectAbility<sup>7+</sup>

disconnectAbility(connection: number): Promise\<void>

断开与指定ServiceAbility的连接(Promise形式)。

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名         | 类型     | 必填   | 说明                      |
| ---------- | ------ | ---- | ----------------------- |
M
m00512953 已提交
675
| connection | number | 是    | 表示断开连接的ServiceAbility的ID |
M
m00512953 已提交
676 677 678 679 680

**返回值:**

| 类型             | 说明              |
| -------------- | --------------- |
M
m00512953 已提交
681
| Promise\<void> | 以Promise形式返回断开连接结果。 |
M
m00512953 已提交
682 683 684 685 686 687 688

**示例:**

```ts
import rpc from '@ohos.rpc';
import featureAbility from '@ohos.ability.featureAbility';
function onConnectCallback(element, remote){
M
mingxihua 已提交
689
    console.log('ConnectAbility onConnect remote is proxy: ${(remote instanceof rpc.RemoteProxy)}');
M
m00512953 已提交
690 691
}
function onDisconnectCallback(element){
M
mingxihua 已提交
692
    console.log('ConnectAbility onDisconnect element.deviceId : ${element.deviceId}');
M
m00512953 已提交
693 694
}
function onFailedCallback(code){
M
mingxihua 已提交
695
    console.error('featureAbilityTest ConnectAbility onFailed errCode : ${code}');
M
m00512953 已提交
696
}
M
mingxihua 已提交
697
let connectId = featureAbility.connectAbility(
M
m00512953 已提交
698
    {
M
mingxihua 已提交
699 700
        bundleName: 'com.ix.ServiceAbility',
        abilityName: 'com.ix.ServiceAbility.ServiceAbilityA',
M
m00512953 已提交
701 702 703 704 705 706 707 708 709
    },
    {
        onConnect: onConnectCallback,
        onDisconnect: onDisconnectCallback,
        onFailed: onFailedCallback,
    },
);

featureAbility.disconnectAbility(connectId).then((data) => {
M
mingxihua 已提交
710
    console.log('data: ${data)}';
M
m00512953 已提交
711
}).catch((error)=>{
M
mingxihua 已提交
712
    console.error('featureAbilityTest result errCode : ${error.code}');
M
m00512953 已提交
713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728
});
```


## featureAbility.getWindow<sup>7+</sup>

getWindow(callback: AsyncCallback\<window.Window>): void

获取当前Ability对应的窗口(callback形式)。

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**参数:**

| 参数名     | 类型                          | 必填 | 说明                          |
| -------- | ----------------------------- | ---- | ----------------------------- |
M
m00512953 已提交
729
| callback | AsyncCallback\<[window.Window](js-apis-window.md#window)> | 是   | callback形式返回当前Ability对应的窗口。 |
M
m00512953 已提交
730 731 732 733

**示例:**

```ts
M
mingxihua 已提交
734 735 736 737 738 739
featureAbility.getWindow((error, data) => {
    if (error && error.code !== 0) {
        console.error('getWindow fail, error: ${JSON.stringify(error)}');
    } else {
        console.log('getWindow success, data: ${JSON.stringify(data)}');
    }
M
m00512953 已提交
740 741 742 743 744 745 746 747 748 749 750 751 752 753 754
});
```

## featureAbility.getWindow<sup>7+</sup>

getWindow(): Promise\<window.Window>;

获取当前Ability对应的窗口(Promise形式)。

**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel

**返回值:**

| 类型                    | 说明                          |
| ----------------------- | ----------------------------- |
M
m00512953 已提交
755
| Promise\<[window.Window](js-apis-window.md#window)> | Promise形式返回当前Ability对应的窗口。 |
M
m00512953 已提交
756 757 758 759 760

**示例:**

```ts
featureAbility.getWindow().then((data) => {
M
mingxihua 已提交
761
    console.info('getWindow data: ${typeof(data)}');
M
m00512953 已提交
762 763 764 765 766
});
```

## AbilityWindowConfiguration

M
m00512953 已提交
767
表示当前Ability对应的窗口配置项,使用时通过featureAbility.AbilityWindowConfiguration获取。
M
m00512953 已提交
768 769 770 771 772 773 774 775 776 777 778 779 780

**示例:**

```
featureAbility.AbilityWindowConfiguration.WINDOW_MODE_UNDEFINED
```

**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.FAModel

| 名称                                     | 值   | 说明                                       |
| ---------------------------------------- | ---- | ---------------------------------------- |
| WINDOW_MODE_UNDEFINED<sup>7+</sup>       | 0    | 未定义。 |
| WINDOW_MODE_FULLSCREEN<sup>7+</sup>      | 1    | 全屏。    |
M
mingxihua 已提交
781 782
| WINDOW_MODE_SPLIT_PRIMARY<sup>7+</sup>   | 100  | 屏幕如果是水平方向表示左分屏,屏幕如果是竖直方向表示上分屏。 |
| WINDOW_MODE_SPLIT_SECONDARY<sup>7+</sup> | 101  | 屏幕如果是水平方向表示右分屏,屏幕如果是竖直方向表示下分屏。 |
M
m00512953 已提交
783 784 785 786 787
| WINDOW_MODE_FLOATING<sup>7+</sup>        | 102  | 悬浮窗。 |


## AbilityStartSetting

M
m00512953 已提交
788
表示当前Ability对应的窗口属性,abilityStartSetting属性是一个定义为[key: string]: any的对象,key对应设定类型为:AbilityStartSetting枚举类型,value对应设定类型为:AbilityWindowConfiguration枚举类型。
M
m00512953 已提交
789 790 791 792 793 794 795 796 797 798 799 800 801

使用时通过featureAbility.AbilityStartSetting获取。

**示例:**

```
featureAbility.AbilityStartSetting.BOUNDS_KEY
```

**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.FAModel

| 名称                           | 值              | 说明                                       |
| ---------------------------- | --------------- | ---------------------------------------- |
M
mingxihua 已提交
802 803 804
| BOUNDS_KEY<sup>7+</sup>      | 'abilityBounds' | 窗口显示大小属性的参数名。 |
| WINDOW_MODE_KEY<sup>7+</sup> | 'windowMode'    | 窗口显示模式属性的参数名。|
| DISPLAY_ID_KEY<sup>7+</sup>  | 'displayId'     | 窗口显示设备ID属性的参数名。 |
M
m00512953 已提交
805 806 807

## ErrorCode

M
m00512953 已提交
808
表示错误码。
M
m00512953 已提交
809 810 811 812 813 814 815

**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.FAModel

| 名称                             | 值    | 说明                                       |
| ------------------------------ | ---- | ---------------------------------------- |
| NO_ERROR<sup>7+</sup>          | 0    | 没有错误。 |
| INVALID_PARAMETER<sup>7+</sup> | -1   | 无效的参数。 |
M
m00512953 已提交
816 817
| ABILITY_NOT_FOUND<sup>7+</sup> | -2   | 找不到ABILITY。 |
| PERMISSION_DENY<sup>7+</sup>   | -3   | 权限拒绝。 |
M
m00512953 已提交
818 819 820 821


## DataAbilityOperationType

M
m00512953 已提交
822
表示数据的操作类型。DataAbility批量操作数据时可以通过该枚举值指定操作类型
M
m00512953 已提交
823 824 825 826 827 828 829 830 831 832 833 834

**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.FAModel

| 名称                       | 值    | 说明                                       |
| ------------------------ | ---- | ---------------------------------------- |
| TYPE_INSERT<sup>7+</sup> | 1    | 插入类型。 |
| TYPE_UPDATE<sup>7+</sup> | 2    | 修改类型。 |
| TYPE_DELETE<sup>7+</sup> | 3    | 删除类型。 |
| TYPE_ASSERT<sup>7+</sup> | 4    | 声明类型。 |

## flags说明

M
m00512953 已提交
835 836
表示处理Want的方式。

M
m00512953 已提交
837 838 839 840
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityBase

| 名称                                   | 值         | 说明                                       |
| ------------------------------------ | ---------- | ---------------------------------------- |
M
m00512953 已提交
841 842 843 844 845 846 847 848 849 850 851 852 853
| FLAG_AUTH_READ_URI_PERMISSION        | 0x00000001 | 表示对URI执行读取操作的授权。                         |
| FLAG_AUTH_WRITE_URI_PERMISSION       | 0x00000002 | 表示对URI执行写入操作的授权。                         |
| FLAG_ABILITY_FORWARD_RESULT          | 0x00000004 | 表示将结果返回给源Ability。                               |
| FLAG_ABILITY_CONTINUATION            | 0x00000008 | 表示是否可以将本地设备上的Ability迁移到远端设备。                  |
| FLAG_NOT_OHOS_COMPONENT              | 0x00000010 | 表示组件是否不属于OHOS。                            |
| FLAG_ABILITY_FORM_ENABLED            | 0x00000020 | 表示某个Ability是否已经启动。                              |
| FLAG_AUTH_PERSISTABLE_URI_PERMISSION | 0x00000040 | 表示URI上可能持久化的授权。<br>**系统API**: 此接口为系统接口,三方应用不支持调用。                          |
| FLAG_AUTH_PREFIX_URI_PERMISSION      | 0x00000080 | 表示按照前缀匹配的方式验证URI权限。<br>**系统API**: 此接口为系统接口,三方应用不支持调用。                        |
| FLAG_ABILITYSLICE_MULTI_DEVICE       | 0x00000100 | 表示支持分布式调度系统中的多设备启动。                        |
| FLAG_START_FOREGROUND_ABILITY        | 0x00000200 | 表示无论宿主应用是否已启动,都将使用前台模式启动Ability。<br>**系统API**: 此接口为系统接口,三方应用不支持调用。           |
| FLAG_ABILITY_CONTINUATION_REVERSIBLE | 0x00000400 | 表示迁移是否是可反向的。                               |
| FLAG_INSTALL_ON_DEMAND               | 0x00000800 | 表示如果未安装指定的Ability,将安装该Ability。                       |
| FLAG_INSTALL_WITH_BACKGROUND_MODE    | 0x80000000 | 表示如果未安装指定的Ability,将在后台安装该Ability。                       |
M
mingxihua 已提交
854
| FLAG_ABILITY_CLEAR_MISSION           | 0x00008000 | 表示清除其他任务的操作。可以为传递给 **[ohos.app.Context](js-apis-ability-context.md)****startAbility**方法的**Want**设置此标志,并且必须与**FLAG_ABILITY_NEW_MISSION**一起使用。 |
M
m00512953 已提交
855 856
| FLAG_ABILITY_NEW_MISSION             | 0x10000000 | 表示在已有的任务栈上创建任务的操作。                       |
| FLAG_ABILITY_MISSION_TOP             | 0x20000000 | 表示如果启动的Ability的现有实例已位于任务栈顶,则将重用该实例。否则,将创建一个新的Ability实例。 |
M
m00512953 已提交
857