js-apis-featureAbility.md 30.2 KB
Newer Older
1
# FeatureAbility模块(JS端SDK接口)
X
xuchenghua09 已提交
2

Z
zengyawen 已提交
3
## 使用限制
X
xuchenghua09 已提交
4 5 6

FeatureAbility模块的接口只能在Page类型的Ability调用

Z
zengyawen 已提交
7
## 导入模块
X
xuchenghua09 已提交
8 9 10 11 12

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

Z
zengyawen 已提交
13
## featureAbility.startAbility
X
xuchenghua09 已提交
14

Z
zengyawen 已提交
15
startAbility(parameter: StartAbilityParameter, callback: AsyncCallback\<number>): void
X
xuchenghua09 已提交
16

Z
zengyawen 已提交
17
启动新的ability(callback形式)。
X
xuchenghua09 已提交
18

Z
zengyawen 已提交
19
**参数:**
X
xuchenghua09 已提交
20

Z
zengyawen 已提交
21 22 23 24
| 名称      | 类型                  | 必填 | 描述                |
| --------- | --------------------- | ---- | ------------------- |
| parameter | [StartAbilityParameter](#startabilityparameter) | 是   | 表示被启动的Ability。 |
| callback  | AsyncCallback\<number>         | 是   | 被指定的回调方法。   |
X
xuchenghua09 已提交
25

Z
zengyawen 已提交
26
**示例:**
X
xuchenghua09 已提交
27 28 29

```javascript
import featureAbility from '@ohos.ability.featureAbility'
30
import wantConstant from '@ohos.ability.wantConstant'
X
xuchenghua09 已提交
31 32 33 34 35 36 37
featureAbility.startAbility(
        {
        want:
        {
            action: "",
            entities: [""],
            type: "",
38
            flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
X
xuchenghua09 已提交
39 40 41 42 43 44
            deviceId: "",
            bundleName: "com.example.startability",
            abilityName: "com.example.startability.MainAbility",
            uri: ""
        },
    },
45
);
X
xuchenghua09 已提交
46 47 48 49
```



Z
zengyawen 已提交
50
## featureAbility.startAbility
X
xuchenghua09 已提交
51

Z
zengyawen 已提交
52
startAbility(parameter: StartAbilityParameter): Promise\<number>
X
xuchenghua09 已提交
53

Z
zengyawen 已提交
54
启动新的ability(Promise形式)。
X
xuchenghua09 已提交
55

Z
zengyawen 已提交
56
**参数:**
X
xuchenghua09 已提交
57

Z
zengyawen 已提交
58 59 60
| 名称      | 类型                                            | 必填 | 描述                  |
| --------- | ----------------------------------------------- | ---- | --------------------- |
| parameter | [StartAbilityParameter](#startabilityparameter) | 是   | 表示被启动的Ability。 |
X
xuchenghua09 已提交
61

Z
zengyawen 已提交
62
**示例:**
X
xuchenghua09 已提交
63 64 65

```javascript
import featureAbility from '@ohos.ability.featureAbility'
66
import wantConstant from '@ohos.ability.wantConstant'
X
xuchenghua09 已提交
67 68 69 70
featureAbility.startAbility(
    {
        want:
        {
71
            action: "action.system.home",
X
xuchenghua09 已提交
72 73
            entities: ["entity.system.home"],
            type: "MIMETYPE",
74 75
			flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
            deviceId: "",
X
xuchenghua09 已提交
76 77 78 79 80
            bundleName: "com.example.startability",
            abilityName: "com.example.startability.MainAbility",
            uri: ""
        },
    }
81
   ).then((data) => {
X
xuchenghua09 已提交
82 83 84 85
	console.info("==========================>startAbility=======================>");
});
```

Z
zengyawen 已提交
86
## featureAbility.acquireDataAbilityHelper
X
xuchenghua09 已提交
87

Z
zengyawen 已提交
88
acquireDataAbilityHelper(uri: string): DataAbilityHelper
X
xuchenghua09 已提交
89

Z
zengyawen 已提交
90
获取dataAbilityHelper。
X
xuchenghua09 已提交
91

Z
zengyawen 已提交
92
**参数:**
X
xuchenghua09 已提交
93

Z
zengyawen 已提交
94 95 96
| 名称 | 类型   | 必填 | 描述                     |
| ---- | ------ | ---- | ------------------------ |
| uri  | string | 是   | 指示要打开的文件的路径。 |
X
xuchenghua09 已提交
97

Z
zengyawen 已提交
98
**返回值:**
X
xuchenghua09 已提交
99

Z
zengyawen 已提交
100 101 102
| 类型              | 说明                                         |
| ----------------- | -------------------------------------------- |
| DataAbilityHelper | 用来协助其他Ability访问DataAbility的工具类。 |
X
xuchenghua09 已提交
103

Z
zengyawen 已提交
104
**示例:**
X
xuchenghua09 已提交
105 106 107 108 109 110 111 112

```javascript
import featureAbility from '@ohos.ability.featureAbility'
featureAbility.acquireDataAbilityHelper(
    "dataability:///com.exmaple.DataAbility"
)
```

Z
zengyawen 已提交
113
## featureAbility.startAbilityForResult
X
xuchenghua09 已提交
114

Z
zengyawen 已提交
115
startAbilityForResult(parameter: StartAbilityParameter, callback: AsyncCallback\<AbilityResult>): void
X
xuchenghua09 已提交
116

Z
zengyawen 已提交
117
启动一个ability,并在该ability被销毁时返回执行结果(callback形式)。
X
xuchenghua09 已提交
118

Z
zengyawen 已提交
119
**参数:**
X
xuchenghua09 已提交
120

Z
zengyawen 已提交
121 122 123 124
| 名称      | 类型                                            | 必填 | 描述                  |
| --------- | ----------------------------------------------- | ---- | --------------------- |
| parameter | [StartAbilityParameter](#startabilityparameter) | 是   | 表示被启动的Ability。 |
| callback  | AsyncCallback\<[AbilityResult](#abilityresult)> | 是   | 被指定的回调方法。    |
X
xuchenghua09 已提交
125

Z
zengyawen 已提交
126
**示例:**
X
xuchenghua09 已提交
127 128 129

```javascript
import featureAbility from '@ohos.ability.featureability';
130
import wantConstant from '@ohos.ability.wantConstant'
X
xuchenghua09 已提交
131 132 133 134 135 136 137
featureAbility.startAbilityForResult(
   {
        want:
        {
            action: "action.system.home",
            entities: ["entity.system.home"],
            type: "MIMETYPE",
138
            flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
X
xuchenghua09 已提交
139 140 141 142 143 144 145 146 147
            deviceId: "",
            bundleName: "com.example.featureabilitytest",
            abilityName: "com.example.featureabilitytest.MainAbility",
            uri:""
        },
    },
)
```

Z
zengyawen 已提交
148
## featureAbility.startAbilityForResult
X
xuchenghua09 已提交
149

Z
zengyawen 已提交
150
startAbilityForResult(parameter: StartAbilityParameter): Promise\<AbilityResult>
X
xuchenghua09 已提交
151

Z
zengyawen 已提交
152
启动一个ability,并在该ability被销毁时返回执行结果(Promise形式)。
X
xuchenghua09 已提交
153

Z
zengyawen 已提交
154
**参数:**
X
xuchenghua09 已提交
155

Z
zengyawen 已提交
156 157 158
| 名称      | 类型                                            | 必填 | 描述                |
| --------- | ----------------------------------------------- | ---- | ------------------- |
| parameter | [StartAbilityParameter](#startabilityparameter) | 是   | 表示被启动的Ability |
X
xuchenghua09 已提交
159

Z
zengyawen 已提交
160 161 162 163
**返回值:**
| 类型                                      | 说明           |
| ----------------------------------------- | -------------- |
| Promise\<[AbilityResult](#abilityresult)> | 返回执行结果。 |
X
xuchenghua09 已提交
164

Z
zengyawen 已提交
165
**示例:**
X
xuchenghua09 已提交
166 167 168

```javascript
import featureAbility from '@ohos.ability.featureability';
169
import wantConstant from '@ohos.ability.wantConstant'
X
xuchenghua09 已提交
170 171 172 173 174 175 176
featureAbility.startAbilityForResult(
    {
        want:
        {
            action: "action.system.home",
            entities: ["entity.system.home"],
            type: "MIMETYPE",
177
            flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
X
xuchenghua09 已提交
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
            deviceId: "",
            bundleName: "com.example.featureabilitytest",
            abilityName: "com.example.featureabilitytest.MainAbility",
            uri:"",
            parameters:
            {
                mykey0: 1111,
                mykey1: [1, 2, 3],
                mykey2: "[1, 2, 3]",
                mykey3: "xxxxxxxxxxxxxxxxxxxxxx",
                mykey4: [1, 15],
                mykey5: [false, true, false],
                mykey6: ["aaaaaa", "bbbbb", "ccccccccccc"],
                mykey7: true,
            },
        },
        requestCode: 2,
    },
196
).then((data) => {
X
xuchenghua09 已提交
197 198 199 200
    console.info("==========================>startAbilityForResult=======================>");
});
```

Z
zengyawen 已提交
201
## featureAbility.terminateSelfWithResult
X
xuchenghua09 已提交
202

Z
zengyawen 已提交
203
terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback\<void>): void
X
xuchenghua09 已提交
204

Z
zengyawen 已提交
205
设置此Page Ability将返回给调用者的结果代码和数据并破坏此Page Ability(callback形式)。
X
xuchenghua09 已提交
206

Z
zengyawen 已提交
207
**参数:**
X
xuchenghua09 已提交
208

Z
zengyawen 已提交
209 210 211 212
| 名称      | 类型          | 必填 | 描述                |
| --------- | ------------- | ---- | ------------------- |
| parameter | [AbilityResult](#abilityresult) | 是   | 表示被启动的Ability。 |
| callback  | AsyncCallback\<void> | 是   | 被指定的回调方法。  |
X
xuchenghua09 已提交
213

Z
zengyawen 已提交
214
**示例:**
X
xuchenghua09 已提交
215 216 217

```javascript
import featureAbility from '@ohos.ability.featureAbility'
218
import wantConstant from '@ohos.ability.wantConstant'
X
xuchenghua09 已提交
219 220 221 222 223 224 225 226
featureAbility.terminateSelfWithResult(
    {
        resultCode: 1,
        want:
        {
            action: "action.system.home",
            entities: ["entity.system.home"],
            type: "MIMETYPE",
227
            flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
X
xuchenghua09 已提交
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246
            deviceId: "",
            bundleName: "com.example.featureabilitytest",
            abilityName: "com.example.featureabilitytest.MainAbility",
            uri:"",
            parameters: {
                mykey0: 2222,
                mykey1: [1, 2, 3],
                mykey2: "[1, 2, 3]",
                mykey3: "ssssssssssssssssssssssssss",
                mykey4: [1, 15],
                mykey5: [false, true, false],
                mykey6: ["qqqqq", "wwwwww", "aaaaaaaaaaaaaaaaa"],
                mykey7: true,
            }
        },
    },
);
```

Z
zengyawen 已提交
247
## featureAbility.terminateSelfWithResult
X
xuchenghua09 已提交
248

Z
zengyawen 已提交
249
terminateSelfWithResult(parameter: AbilityResult): Promise\<void>
X
xuchenghua09 已提交
250

Z
zengyawen 已提交
251
设置此Page Ability将返回给调用者的结果代码和数据并破坏此Page Ability(Promise形式)。
X
xuchenghua09 已提交
252

Z
zengyawen 已提交
253
**参数:**
X
xuchenghua09 已提交
254

Z
zengyawen 已提交
255 256 257
| 名称      | 类型                            | 必填 | 描述                |
| --------- | ------------------------------- | ---- | ------------------- |
| parameter | [AbilityResult](#abilityresult) | 是   | 表示被启动的Ability |
X
xuchenghua09 已提交
258

Z
zengyawen 已提交
259 260 261 262
**返回值:**
| 类型           | 说明                    |
| -------------- | ----------------------- |
| Promise\<void> | 以Promise形式返回结果。 |
X
xuchenghua09 已提交
263

Z
zengyawen 已提交
264
**示例:**
X
xuchenghua09 已提交
265 266 267

```javascript
import featureAbility from '@ohos.ability.featureability';
268
import wantConstant from '@ohos.ability.wantConstant'
X
xuchenghua09 已提交
269 270 271 272 273 274 275 276
featureAbility.terminateSelfWithResult(
    {
        resultCode: 1,
        want:
        {
            action: "action.system.home",
            entities: ["entity.system.home"],
            type: "MIMETYPE",
277
            flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
X
xuchenghua09 已提交
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293
            deviceId: "",
            bundleName: "com.example.featureabilitytest",
            abilityName: "com.example.featureabilitytest.MainAbility",
            uri:"",
            parameters: {
                mykey0: 2222,
                mykey1: [1, 2, 3],
                mykey2: "[1, 2, 3]",
                mykey3: "ssssssssssssssssssssssssss",
                mykey4: [1, 15],
                mykey5: [false, true, false],
                mykey6: ["qqqqq", "wwwwww", "aaaaaaaaaaaaaaaaa"],
                mykey7: true,
            }
        },
    }
294
).then((data) => {
X
xuchenghua09 已提交
295 296 297 298 299 300
    console.info("==========================>terminateSelfWithResult=======================>");
});
```



Z
zengyawen 已提交
301
## featureAbility.hasWindowFocus
X
xuchenghua09 已提交
302

Z
zengyawen 已提交
303
hasWindowFocus(callback: AsyncCallback\<boolean>): void
X
xuchenghua09 已提交
304

Z
zengyawen 已提交
305
检查Ability的主窗口是否具有窗口焦点(callback形式)。
X
xuchenghua09 已提交
306

Z
zengyawen 已提交
307
**参数:**
X
xuchenghua09 已提交
308

Z
zengyawen 已提交
309 310 311
| 名称     | 类型                    | 必填 | 描述                                                         |
| -------- | ----------------------- | ---- | ------------------------------------------------------------ |
| callback | AsyncCallback\<boolean> | 是   | 被指定的回调方法。<br>如果此Ability当前具有视窗焦点,则返回true;否则返回false。 |
X
xuchenghua09 已提交
312

Z
zengyawen 已提交
313
**示例:**
X
xuchenghua09 已提交
314 315 316 317 318 319 320 321

```javascript
import featureAbility from '@ohos.ability.featureability';
featureAbility.hasWindowFocus()
```



Z
zengyawen 已提交
322
## featureAbility.hasWindowFocus
X
xuchenghua09 已提交
323

Z
zengyawen 已提交
324
hasWindowFocus(): Promise\<boolean>
X
xuchenghua09 已提交
325

Z
zengyawen 已提交
326
检查Ability的主窗口是否具有窗口焦点(Promise形式)。
X
xuchenghua09 已提交
327

Z
zengyawen 已提交
328
**返回值:**
X
xuchenghua09 已提交
329

Z
zengyawen 已提交
330 331 332
| 类型              | 说明                                                       |
| ----------------- | ---------------------------------------------------------- |
| Promise\<boolean> | 如果此Ability当前具有视窗焦点,则返回true;否则返回false。 |
X
xuchenghua09 已提交
333

Z
zengyawen 已提交
334
**示例:**
X
xuchenghua09 已提交
335 336 337

```javascript
import featureAbility from '@ohos.ability.featureability';
338
featureAbility.hasWindowFocus().then((data) => {
X
xuchenghua09 已提交
339 340 341 342 343 344
    console.info("==========================>hasWindowFocus=======================>");
});
```



Z
zengyawen 已提交
345
## featureAbility.getWant
X
xuchenghua09 已提交
346

Z
zengyawen 已提交
347
getWant(callback: AsyncCallback\<Want>): void
X
xuchenghua09 已提交
348

Z
zengyawen 已提交
349
获取从Ability发送的Want(callback形式)。
X
xuchenghua09 已提交
350

Z
zengyawen 已提交
351
**参数:**
X
xuchenghua09 已提交
352

Z
zengyawen 已提交
353 354 355
| 名称     | 类型                          | 必填 | 描述               |
| -------- | ----------------------------- | ---- | ------------------ |
| callback | AsyncCallback\<[Want](#want)> | 是   | 被指定的回调方法。 |
X
xuchenghua09 已提交
356

Z
zengyawen 已提交
357
**示例:**
X
xuchenghua09 已提交
358 359 360 361 362 363 364 365

```javascript
import featureAbility from '@ohos.ability.featureability';
featureAbility.getWant()
```



Z
zengyawen 已提交
366
## featureAbility.getWant
X
xuchenghua09 已提交
367

Z
zengyawen 已提交
368
getWant(): Promise\<Want>
X
xuchenghua09 已提交
369

Z
zengyawen 已提交
370
获取从Ability发送的Want(Promise形式)。
X
xuchenghua09 已提交
371

Z
zengyawen 已提交
372 373 374 375
**返回值:**
| 类型                    | 说明                      |
| ----------------------- | ------------------------- |
| Promise\<[Want](#want)> | 以Promise的形式返回结果。 |
X
xuchenghua09 已提交
376

Z
zengyawen 已提交
377
**示例:**
X
xuchenghua09 已提交
378 379 380

```javascript
import featureAbility from '@ohos.ability.featureability';
381
featureAbility.getWant().then((data) => {
X
xuchenghua09 已提交
382 383 384 385
		console.info("==========================>getWantCallBack=======================>");
});
```

Z
zengyawen 已提交
386
## featureAbility.getContext
X
xuchenghua09 已提交
387

Z
zengyawen 已提交
388
getContext(): Context
X
xuchenghua09 已提交
389

Z
zengyawen 已提交
390
获取应用上下文。
X
xuchenghua09 已提交
391

Z
zengyawen 已提交
392 393 394 395
**返回值:**
| 类型    | 说明                 |
| ------- | -------------------- |
| Context | 返回应用程序上下文。 |
X
xuchenghua09 已提交
396

Z
zengyawen 已提交
397
**示例:**
X
xuchenghua09 已提交
398 399 400 401 402 403 404 405 406

```javascript
import featureAbility from '@ohos.ability.featureability';
var context = featureAbility.getContext()
context.getBundleName()
```



Z
zengyawen 已提交
407
## featureAbility.terminateSelf
X
xuchenghua09 已提交
408

Z
zengyawen 已提交
409
terminateSelf(callback: AsyncCallback\<void>): void
X
xuchenghua09 已提交
410

Z
zengyawen 已提交
411
设置Page Ability返回给被调用方的结果代码和数据,并销毁此Page Ability(callback形式)。
X
xuchenghua09 已提交
412

Z
zengyawen 已提交
413
**参数:**
X
xuchenghua09 已提交
414

Z
zengyawen 已提交
415 416 417
| 名称     | 类型                 | 必填 | 描述             |
| -------- | -------------------- | ---- | ---------------- |
| callback | AsyncCallback\<void> | 是   | 被指定的回调方法 |
X
xuchenghua09 已提交
418

Z
zengyawen 已提交
419
**示例:**
X
xuchenghua09 已提交
420 421 422 423 424 425 426 427

```javascript
import featureAbility from '@ohos.ability.featureability';
featureAbility.terminateSelf()
```



Z
zengyawen 已提交
428
## featureAbility.terminateSelf
X
xuchenghua09 已提交
429

Z
zengyawen 已提交
430
terminateSelf(): Promise\<void>
X
xuchenghua09 已提交
431

Z
zengyawen 已提交
432
设置Page Ability返回给被调用方的结果代码和数据,并销毁此Page Ability(Promise形式)。
X
xuchenghua09 已提交
433

Z
zengyawen 已提交
434 435 436 437
**返回值:**
| 类型           | 说明                      |
| -------------- | ------------------------- |
| Promise\<void> | 以Promise的形式返回结果。 |
X
xuchenghua09 已提交
438

Z
zengyawen 已提交
439
**示例:**
X
xuchenghua09 已提交
440 441 442

```javascript
import featureAbility from '@ohos.ability.featureability';
443
featureAbility.terminateSelf().then((data) => {		    console.info("==========================>terminateSelfCallBack=======================>");
X
xuchenghua09 已提交
444 445 446
});
```

Z
zengyawen 已提交
447
## featureAbility.connectAbility
X
xuchenghua09 已提交
448

Z
zengyawen 已提交
449
connectAbility(request: Want, options:ConnectOptions): number
X
xuchenghua09 已提交
450

Z
zengyawen 已提交
451
将当前ability连接到指定ServiceAbility(callback形式)。
X
xuchenghua09 已提交
452

Z
zengyawen 已提交
453
**参数:**
X
xuchenghua09 已提交
454

Z
zengyawen 已提交
455 456
| 名称    | 类型           | 必填 | 描述                         |
| ------- | -------------- | ---- | ---------------------------- |
457
| request | [Want](#want)           | 是   | 表示被连接的ServiceAbility。 |
Z
zengyawen 已提交
458
| options | ConnectOptions | 是   | 被指定的回调方法。           |
X
xuchenghua09 已提交
459

Z
zengyawen 已提交
460
**Want类型说明:**
461 462 463 464 465 466 467

| 名称         | 读写属性  | 类型     | 必填 | 描述                                                              |
| ------------ | -------- | -------- | ---- | ----------------------------------                               |
| deviceId     | 只读     | string   | 否   | 表示被连接的ServiceAbility的设备id,缺省表示连接本地的ServiceAbility |
| bundleName   | 只读     | string   | 是   | 表示被连接的ServiceAbility的包名                                   |
| abilityName  | 只读     | string   | 是   | 表示被连接的ServiceAbility的类名                                   |

Z
zengyawen 已提交
468
**ConnectOptions类型说明:**
X
xuchenghua09 已提交
469 470 471 472 473 474 475

| 名称         | 读写属性 | 类型     | 必填 | 描述                               |
| ------------ | -------- | -------- | ---- | ---------------------------------- |
| onConnect    | 只读     | function | 是   | 连接成功时的回调函数               |
| onDisconnect | 只读     | function | 是   | 连接失败时的回调函数               |
| onFailed     | 只读     | function | 是   | ConnectAbility调用失败时的回调函数 |

Z
zengyawen 已提交
476 477 478 479
**返回值:**
| 类型   | 说明                     |
| ------ | ------------------------ |
| number | 连接的ServiceAbilityID。 |
X
xuchenghua09 已提交
480

Z
zengyawen 已提交
481
**示例:**
X
xuchenghua09 已提交
482 483 484 485 486 487 488 489 490 491 492 493 494 495

```javascript
import featureAbility from '@ohos.ability.featureAbility'
function onConnectCallback(element, remote){
    console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy));
}
function onDisconnectCallback(element){
    console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId)
}
function onFailedCallback(code){
    console.log('featureAbilityTest ConnectAbility onFailed errCode : ' + code)
}
var connId = featureAbility.connectAbility(
    {
496
        deviceId: "",
X
xuchenghua09 已提交
497 498 499 500 501 502 503 504 505 506 507
        bundleName: "com.ix.ServiceAbility",
        abilityName: "ServiceAbilityA",
    },
    {
        onConnect: onConnectCallback,
        onDisconnect: onDisconnectCallback,
        onFailed: onFailedCallback,
    },
);
```

Z
zengyawen 已提交
508
## featureAbility.disconnectAbility
X
xuchenghua09 已提交
509

Z
zengyawen 已提交
510
disconnectAbility(connection: number, callback:AsyncCallback\<void>): void
X
xuchenghua09 已提交
511

Z
zengyawen 已提交
512
断开与指定ServiceAbility的连接(callback形式)。
X
xuchenghua09 已提交
513

Z
zengyawen 已提交
514
**参数:**
X
xuchenghua09 已提交
515

Z
zengyawen 已提交
516 517 518 519
| 名称       | 类型          | 必填 | 描述                           |
| ---------- | ------------- | ---- | ------------------------------ |
| connection | number        | 是   | 指定断开连接的ServiceAbilityID |
| callback   | AsyncCallback\<void> | 是   | 被指定的回调方法               |
X
xuchenghua09 已提交
520

Z
zengyawen 已提交
521
**示例:**
X
xuchenghua09 已提交
522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551

```javascript
import featureAbility from '@ohos.ability.featureAbility'
function onConnectCallback(element, remote){
    console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy));
}
function onDisconnectCallback(element){
    console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId)
}
function onFailedCallback(code){
    console.log('featureAbilityTest ConnectAbility onFailed errCode : ' + code)
}
var connId = featureAbility.connectAbility(
    {
        bundleName: "com.ix.ServiceAbility",
        abilityName: "ServiceAbilityA",
    },
    {
        onConnect: onConnectCallback,
        onDisconnect: onDisconnectCallback,
        onFailed: onFailedCallback,
    },
);
var result = featureAbility.disconnectAbility(connId,
    (error,data) => {
    console.log('featureAbilityTest DisConnectJsSameBundleName result errCode : ' + error.code + " data: " + data)
    },
);
```

Z
zengyawen 已提交
552
## featureAbility.disconnectAbility
X
xuchenghua09 已提交
553

Z
zengyawen 已提交
554
disconnectAbility(connection: number): Promise\<void>
X
xuchenghua09 已提交
555

Z
zengyawen 已提交
556
断开与指定ServiceAbility的连接(Promise形式)。
X
xuchenghua09 已提交
557

Z
zengyawen 已提交
558
**参数:**
X
xuchenghua09 已提交
559

Z
zengyawen 已提交
560 561 562
| 名称       | 类型   | 必填 | 描述                           |
| ---------- | ------ | ---- | ------------------------------ |
| connection | number | 是   | 指定断开连接的ServiceAbilityID |
X
xuchenghua09 已提交
563

Z
zengyawen 已提交
564 565 566 567
**返回值:**
| 类型           | 说明                    |
| -------------- | ----------------------- |
| Promise\<void> | 以Promise形式返回结果。 |
X
xuchenghua09 已提交
568

Z
zengyawen 已提交
569
**示例:**
X
xuchenghua09 已提交
570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595

```javascript
import featureAbility from '@ohos.ability.featureAbility'
function onConnectCallback(element, remote){
    console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy));
}
function onDisconnectCallback(element){
    console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId)
}
function onFailedCallback(code){
    console.log('featureAbilityTest ConnectAbility onFailed errCode : ' + code)
}
var connId = featureAbility.connectAbility(
    {
        bundleName: "com.ix.ServiceAbility",
        abilityName: "ServiceAbilityA",
    },
    {
        onConnect: onConnectCallback,
        onDisconnect: onDisconnectCallback,
        onFailed: onFailedCallback,
    },
);
var result = await featureAbility.disconnectAbility(connId);
```

Z
zengyawen 已提交
596
## featureAbility.continueAbility
597

Z
zengyawen 已提交
598
continueAbility(options: ContinueAbilityOptions, callback: AsyncCallback\<void>): void
599

Z
zengyawen 已提交
600
迁移一个ability到目标设备,并返回执行结果(callback形式)。
601

Z
zengyawen 已提交
602
**参数:**
603

Z
zengyawen 已提交
604 605 606 607
| 名称     | 类型                   | 必填 | 描述                |
| -------- | ---------------------- | ---- | ------------------- |
| options  | ContinueAbilityOptions | 是   | 表示被启动的Ability |
| callback | AsyncCallback\<void>   | 是   | 被指定的回调方法    |
608

Z
zengyawen 已提交
609
**ContinueAbilityOptions类型说明:**
610

Z
zengyawen 已提交
611 612 613 614
| 名称       | 读写属性 | 类型    | 必填 | 描述                                                         |
| ---------- | -------- | ------- | ---- | ------------------------------------------------------------ |
| deviceId   | 只读     | string  | 是   | 表示需要包含有关目标启动能力的信息。                         |
| reversible | 只读     | boolean | 是   | 是否支持回迁的标志,目前不支持该功能,为保留字段,可填false。 |
615

Z
zengyawen 已提交
616
**示例:**
617 618

```javascript
619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667
import device from '@system.device'
import ability from '@ohos.ability.featureability'

var DEVICE_LIST_LOCALHOST
export default {
    data: {
        title: "",
        deviceId: '',
        deviceList: [],
        remoteDeviceModel : new RemoteDeviceModel()
    },
    onInit() {
        DEVICE_LIST_LOCALHOST = {
            id: 'localhost',
        };
        this.deviceList = [DEVICE_LIST_LOCALHOST];
    },
    onShow() {
        const core = Core.getInstance()
        const expectExtend = new ExpectExtend({
            'id': 'extend'
        })
        const reportExtend = new ReportExtend(file)
        core.addService('expect', expectExtend)
        core.addService('report', reportExtend)
        core.init()
        const configService = core.getDefaultService('config')
        configService.setConfig(this)
        core.execute()
    },
    onReady() {
    },
    GetNetWorkId(){
        let self = this;
        this.remoteDeviceModel.registerDeviceListCallback(() => {
            var list = [];
            list[0] = DEVICE_LIST_LOCALHOST;
            var deviceList = self.remoteDeviceModel.deviceList;
            for (var i = 0; i < deviceList.length; i++) {
                list[i] = {
                    id: deviceList[i].deviceId,
                };
            }
            self.deviceList = list;
        });
    },
    ShowNetWorkId(){
        this.deviceId = this.deviceList[0].id;
    },
668

669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767
    async ContinueAbility(){
        function ContinueAbilityCallback(err) {
            console.info("=============>ContinueAbilityCallback============>");
        }
        var continueAbilityOptions = {
            reversible: false,
            deviceId: this.deviceId,
        }
        //continueAbility callback
        await ability.continueAbility(continueAbilityOptions, ContinueAbilityCallback);
    },
}
```

## featureAbility.continueAbility

continueAbility(options: ContinueAbilityOptions): Promise\<void>;

迁移一个ability到目标设备,并返回执行结果(Promise形式)。

**参数:**

| 名称    | 类型                   | 必填 | 描述                |
| ------- | ---------------------- | ---- | ------------------- |
| options | ContinueAbilityOptions | 是   | 表示被启动的Ability |

**ContinueAbilityOptions类型说明:**

| 名称       | 读写属性 | 类型    | 必填 | 描述                                                         |
| ---------- | -------- | ------- | ---- | ------------------------------------------------------------ |
| deviceId   | 只读     | string  | 是   | 表示需要包含有关目标启动能力的信息。                         |
| reversible | 只读     | boolean | 是   | 是否支持回迁的标志,目前不支持该功能,为保留字段,可填false。 |

**示例:**

```javascript
import device from '@system.device'
import ability from '@ohos.ability.featureability'

var DEVICE_LIST_LOCALHOST
export default {
    data: {
        title: "",
        deviceId: '',
        deviceList: [],
        remoteDeviceModel : new RemoteDeviceModel()
    },
    onInit() {
        DEVICE_LIST_LOCALHOST = {
            id: 'localhost',
        };
        this.deviceList = [DEVICE_LIST_LOCALHOST];
    },
    onShow() {
        const core = Core.getInstance()
        const expectExtend = new ExpectExtend({
            'id': 'extend'
        })
        const reportExtend = new ReportExtend(file)
        core.addService('expect', expectExtend)
        core.addService('report', reportExtend)
        core.init()
        const configService = core.getDefaultService('config')
        configService.setConfig(this)
        core.execute()
    },
    onReady() {
    },
    GetNetWorkId(){
        let self = this;
        this.remoteDeviceModel.registerDeviceListCallback(() => {
            var list = [];
            list[0] = DEVICE_LIST_LOCALHOST;
            var deviceList = self.remoteDeviceModel.deviceList;
            for (var i = 0; i < deviceList.length; i++) {
                list[i] = {
                    id: deviceList[i].deviceId,
                };
            }
            self.deviceList = list;
        });
    },
    ShowNetWorkId(){
        this.deviceId = this.deviceList[0].id;
    },

    async ContinueAbility(){
        function ContinueAbilityCallback(err) {
            console.info("=============>ContinueAbilityCallback============>");
        }
        var continueAbilityOptions = {
            reversible: false,
            deviceId: this.deviceId,
        }
        //continueAbility promise
        await ability.continueAbility(continueAbilityOptions).then(() => {
            console.info("=======>continueAbilityCallback=========>");
        });
    },
768 769 770
}
```

Z
zengyawen 已提交
771
## AbilityResult
X
xuchenghua09 已提交
772 773 774 775

| 名称       | 读写属性 | 类型                  | 必填 | 描述                                                         |
| ---------- | -------- | --------------------- | ---- | ------------------------------------------------------------ |
| resultCode | 只读     | number                | 是   | 指示销毁该能力后返回的结果代码。您可以定义结果代码来识别错误(暂不支持) |
776
| want       | 只读     | [Want](#want) | 否   | 指示销毁该能力后返回的数据。您可以定义返回的数据。此参数可以为null。 |
X
xuchenghua09 已提交
777

Z
zengyawen 已提交
778
## StartAbilityParameter
X
xuchenghua09 已提交
779

Z
zengyawen 已提交
780 781 782 783
| 名称                | 读写属性 | 类型                 | 必填 | 描述                                                         |
| ------------------- | -------- | -------------------- | ---- | ------------------------------------------------------------ |
| want                | 只读     | [Want](#want)        | 是   | 表示需要包含有关目标启动能力的信息。                         |
| abilityStartSetting | 只读     | {[key: string]: any} | 否   | 表示能力的特殊属性,当开发者启动能力时,该属性可以作为调用中的输入参数传递。 |
X
xuchenghua09 已提交
784

Z
zengyawen 已提交
785
## Want
X
xuchenghua09 已提交
786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804

| 名称        | 读写属性 | 类型                 | 必填 | 描述                                                         |
| ----------- | -------- | -------------------- | ---- | ------------------------------------------------------------ |
| deviceId    | 只读     | string               | 否   | 表示运行指定Ability的设备ID。                                |
| bundleName  | 只读     | string               | 否   | 表示包描述。如果在Want中同时指定了BundleName和AbilityName,则Want可以直接匹配到指定的Ability。 |
| abilityName | 只读     | string               | 否   | 表示待启动的Ability名称。如果在Want中同时指定了BundleName和AbilityName,则Want可以直接匹配到指定的Ability。 |
| uri         | 只读     | string               | 否   | 表示Uri描述。如果在Want中指定了Uri,则Want将匹配指定的Uri信息,包括scheme, schemeSpecificPart, authority和path信息。 |
| type        | 只读     | string               | 否   | 表示MIME type类型描述,比如:"text/plain" 、 "image/*"等。   |
| flags       | 只读     | number               | 否   | 表示处理Want的方式。默认传数字,具体参考:[flags说明](#flags说明)。 |
| action      | 只读     | string               | 否   | 表示action选项描述。                                         |
| parameters  | 只读     | {[key: string]: any} | 否   | 表示WantParams描述。                                         |
| entities    | 只读     | Array\<string>       | 否   | 表示entities相关描述。                                       |

## flags说明

| 名称                                 | 参数       | 描述                                                         |
| ------------------------------------ | ---------- | ------------------------------------------------------------ |
| FLAG_AUTH_READ_URI_PERMISSION        | 0x00000001 | 指示对URI执行读取操作的授权                                  |
| FLAG_AUTH_WRITE_URI_PERMISSION       | 0x00000002 | 指示对URI执行写入操作的授权                                  |
W
wusongqing 已提交
805
| FLAG_ABILITY_FORWARD_RESULT          | 0x00000004 | 将结果返回给元能力                                           |
X
xuchenghua09 已提交
806 807 808 809
| FLAG_ABILITY_CONTINUATION            | 0x00000008 | 确定是否可以将本地设备上的功能迁移到远程设备                 |
| FLAG_NOT_OHOS_COMPONENT              | 0x00000010 | 指定组件是否属于OHOS                                         |
| FLAG_ABILITY_FORM_ENABLED            | 0x00000020 | 指定是否启动某个能力                                         |
| FLAG_AUTH_PERSISTABLE_URI_PERMISSION | 0x00000040 | 指示URI上可能持久化的授权                                    |
W
wusongqing 已提交
810
| FLAG_AUTH_PREFIX_URI_PERMISSION      | 0x00000080 | 按照前缀匹配的方式验证URI权限                                           |
X
xuchenghua09 已提交
811 812 813 814 815
| FLAG_ABILITYSLICE_MULTI_DEVICE       | 0x00000100 | 支持分布式调度系统中的多设备启动                             |
| FLAG_START_FOREGROUND_ABILITY        | 0x00000200 | 指示无论主机应用程序是否已启动,都将启动使用服务模板的功能   |
| FLAG_ABILITY_CONTINUATION_REVERSIBLE | 0x00000400 | 表示迁移是可拉回的。                                         |
| FLAG_INSTALL_ON_DEMAND               | 0x00000800 | 如果未安装指定的功能,请安装该功能                           |
| FLAG_INSTALL_WITH_BACKGROUND_MODE    | 0x80000000 | 如果未安装,使用后台模式安装该功能。                         |
W
wusongqing 已提交
816
| FLAG_ABILITY_CLEAR_MISSION           | 0x00008000 | 指示清除其他任务的操作。可以为传递给**ohos.app.Context#startAbility****Want**设置此标志,并且必须与**flag_ABILITY_NEW_MISSION**一起使用 |
X
xuchenghua09 已提交
817 818 819
| FLAG_ABILITY_NEW_MISSION             | 0x10000000 | 指示在历史任务堆栈上创建任务的操作。                         |
| FLAG_ABILITY_MISSION_TOP             | 0x20000000 | 指示如果启动能力的现有实例已位于任务堆栈的顶部,则将重用该实例。否则,将创建一个新的能力实例。 |