js-apis-call.md 17.7 KB
Newer Older
Z
zengyawen 已提交
1 2
# 拨打电话

C
clevercong 已提交
3 4
>**说明:** 
>
Z
zengyawen 已提交
5
>本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
C
clevercong 已提交
6 7


Z
zengyawen 已提交
8
## 导入模块
C
clevercong 已提交
9 10 11 12 13

```
import call from '@ohos.telephony.call';
```

Z
zengyawen 已提交
14
## call.dial<a name=call.dial-callback1></a>
C
clevercong 已提交
15 16 17 18 19 20 21

dial\(phoneNumber: string, callback: AsyncCallback<boolean\>\): void

拨打电话,使用callback方式作为异步方法。

需要权限:ohos.permission.PLACE\_CALL权限,该权限为系统权限。

Z
zengyawen 已提交
22 23
- 参数
  
Z
zengyawen 已提交
24 25 26 27
  | 参数        | 类型                         | 必填 | 说明                                              |
  | ----------- | ---------------------------- | ---- | ------------------------------------------------- |
  | phoneNumber | string                       | 是   | 电话号码。                                        |
  | callback    | AsyncCallback&lt;boolean&gt; | 是   | 回调函数:<br/>- true:成功。<br/>- false:失败。 |
Z
zengyawen 已提交
28
  
C
clevercong 已提交
29 30 31 32 33 34 35 36 37
-   示例

    ```
    call.dial("138xxxxxxxx", (err, data) => {
        console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
    });
    ```


Z
zengyawen 已提交
38
## call.dial<a name=call.dial-callback2></a>
C
clevercong 已提交
39 40 41 42 43 44 45

dial\(phoneNumber: string, options: DialOptions, callback: AsyncCallback<boolean\>\): void

拨打电话,可设置通话参数,使用callback方式作为异步方法。

需要权限:ohos.permission.PLACE\_CALL权限,该权限为系统权限。

Z
zengyawen 已提交
46 47 48 49 50 51 52 53
- 参数

  | 参数        | 类型                         | 必填 | 说明                                              |
  | ----------- | ---------------------------- | ---- | ------------------------------------------------- |
  | phoneNumber | string                       | 是   | 电话号码。                                        |
  | options     | DialOptions                  | 是   | 通话参数,参考[DialOptions](#DialOptions)。       |
  | callback    | AsyncCallback&lt;boolean&gt; | 是   | 回调函数:<br/>- true:成功。<br/>- false:失败。 |

C
clevercong 已提交
54 55 56 57 58 59 60 61 62 63 64 65

-   示例

    ```
    call.dial("138xxxxxxxx", {
        extras: false
    }, (err, data) => {
        console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
    });
    ```


Z
zengyawen 已提交
66
## call.dial<a name=call.dial-promise></a>
C
clevercong 已提交
67 68 69 70 71 72 73 74 75

dial\(phoneNumber: string, options?: DialOptions\): Promise<boolean\>

拨打电话,可设置通话参数,使用promise方式作为异步方法。

需要权限:ohos.permission.PLACE\_CALL权限,该权限为系统权限。

- 参数

Z
zengyawen 已提交
76 77 78 79 80 81 82 83 84 85
  | 参数        | 类型        | 必填 | 说明                                        |
  | ----------- | ----------- | ---- | ------------------------------------------- |
  | phoneNumber | string      | 是   | 电话号码。                                  |
  | options     | DialOptions | 是   | 通话参数,参考[DialOptions](#DialOptions)。 |

- 返回值

  | 类型                   | 说明                              |
  | ---------------------- | --------------------------------- |
  | Promise&lt;boolean&gt; | 以Promise形式返回拨打电话的结果。 |
C
clevercong 已提交
86 87 88 89 90 91 92 93 94 95 96 97 98 99

-   示例

    ```
    let promise = call.dial("138xxxxxxxx", {
        extras: false
    });
    promise.then(data => {
        console.log(`dial success, promise: data->${JSON.stringify(data)}`);
    }).catch(err => {
        console.error(`dial fail, promise: err->${JSON.stringify(err)}`);
    });
    ```

Z
zengyawen 已提交
100
## call.hasCall<a name=call.hasCall-callback></a>
C
clevercong 已提交
101 102 103 104 105

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

判断是否存在通话,使用callback方式作为异步方法。

Z
zengyawen 已提交
106 107 108 109 110
- 参数

  | 参数     | 类型                         | 必填 | 说明                                                         |
  | -------- | ---------------------------- | ---- | ------------------------------------------------------------ |
  | callback | AsyncCallback&lt;boolean&gt; | 是   | 回调函数:<br/>- true:当前存在通话。<br/>- false:当前不存在通话。 |
C
clevercong 已提交
111 112 113 114 115 116 117 118 119 120

-   示例

    ```
    call.hasCall((err, data) => {
        console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
    });
    ```


Z
zengyawen 已提交
121
## call.hasCall<a name=call.hasCall-promise></a>
C
clevercong 已提交
122 123 124 125 126

hasCall\(\): Promise<boolean\>

判断是否存在通话,使用Promise方式作为异步方法。

Z
zengyawen 已提交
127 128 129 130 131
- 返回值

  | 类型                   | 说明                                    |
  | ---------------------- | --------------------------------------- |
  | Promise&lt;boolean&gt; | 以Promise形式异步返回判断是否存在通话。 |
C
clevercong 已提交
132 133 134 135 136 137 138 139 140 141 142 143 144

-   示例

    ```
    let promise = call.hasCall();
    promise.then(data => {
        console.log(`hasCall success, promise: data->${JSON.stringify(data)}`);
    }).catch(err => {
        console.error(`hasCall fail, promise: err->${JSON.stringify(err)}`);
    });
    ```


Z
zengyawen 已提交
145
## call.getCallState<a name=call.getCallState-callback></a>
C
clevercong 已提交
146 147 148 149 150

getCallState\(callback: AsyncCallback<CallState\>\): void

获取通话状态,使用callback方式作为异步方法。

Z
zengyawen 已提交
151 152 153 154 155
- 参数

  | 参数     | 类型                                         | 必填 | 说明                                 |
  | -------- | -------------------------------------------- | ---- | ------------------------------------ |
  | callback | AsyncCallback&lt;[CallState](#CallState)&gt; | 是   | 回调函数:异步返回获取到的通话状态。 |
C
clevercong 已提交
156 157 158 159 160 161 162 163 164 165

-   示例

    ```
    call.getCallState((err, data) => {
        console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
    });
    ```


Z
zengyawen 已提交
166
## call.getCallState<a name="call.getCallState-promise"></a>
C
clevercong 已提交
167 168 169 170 171

getCallState\(\): Promise<CallState\>

获取通话状态,使用Promise方式作为异步方法。

Z
zengyawen 已提交
172 173 174 175 176
- 返回值

  | 类型                                   | 说明                                      |
  | -------------------------------------- | ----------------------------------------- |
  | Promise&lt;[CallState](#CallState)&gt; | 以Promise形式异步返回获取通话状态的结果。 |
C
clevercong 已提交
177 178 179 180 181 182 183 184 185 186 187 188

-   示例

    ```
    let promise = call.getCallState();
    promise.then(data => {
        console.log(`getCallState success, promise: data->${JSON.stringify(data)}`);
    }).catch(err => {
        console.error(`getCallState fail, promise: err->${JSON.stringify(err)}`);
    });
    ```

Z
zengyawen 已提交
189
## call.isEmergencyPhoneNumber<sup>7+</sup><a name=call.isEmergencyPhoneNumber-callback1></a>
C
clevercong 已提交
190 191 192 193 194

isEmergencyPhoneNumber\(phoneNumber: string, callback: AsyncCallback<boolean\>\): void

判断是否是紧急电话号码,使用callback方式作为异步方法。

Z
zengyawen 已提交
195 196 197 198 199 200
- 参数

  | 参数        | 类型                         | 必填 | 说明                                                         |
  | ----------- | ---------------------------- | ---- | ------------------------------------------------------------ |
  | phoneNumber | string                       | 是   | 电话号码。                                                   |
  | callback    | AsyncCallback&lt;boolean&gt; | 是   | 回调函数,返回判断是否是紧急电话号码的结果:<br/>- true:是紧急电话号码。<br/>- false:不是紧急电话号码。 |
C
clevercong 已提交
201 202 203 204 205 206 207 208 209 210

-   示例

    ```
    call.isEmergencyPhoneNumber("138xxxxxxxx", (err, data) => {
        console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
    });
    ```


Z
zengyawen 已提交
211
## call.isEmergencyPhoneNumber<sup>7+</sup><a name=call.isEmergencyPhoneNumber-callback2></a>
C
clevercong 已提交
212 213 214 215 216 217 218

isEmergencyPhoneNumber\(phoneNumber: string, options: EmergencyNumberOptions, callback: AsyncCallback<boolean\>\): void

判断是否是紧急电话号码,使用callback方式作为异步方法。

- 参数

Z
zengyawen 已提交
219 220 221 222 223
    | 参数        | 类型                         | 必填 | 说明                                                         |
    | ----------- | ---------------------------- | ---- | ------------------------------------------------------------ |
    | phoneNumber | string                       | 是   | 电话号码。                                                   |
    | options     | EmergencyNumberOptions       | 是   | 手机参数,参考[EmergencyNumberOptions](#EmergencyNumberOptions)。 |
    | callback    | AsyncCallback&lt;boolean&gt; | 是   | 回调函数,返回判断是否是紧急电话号码的结果:<br/>- true:是紧急电话号码。<br/>- false:不是紧急电话号码。 |
C
clevercong 已提交
224 225 226 227 228 229 230 231 232 233

-   示例

    ```
    call.isEmergencyPhoneNumber("112", {slotId: 1}, (err, value) => {
        console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
    });
    ```


Z
zengyawen 已提交
234
## call.isEmergencyPhoneNumber<sup>7+</sup><a name=call.isEmergencyPhoneNumber-promise></a>
C
clevercong 已提交
235 236 237 238 239 240 241

isEmergencyPhoneNumber\(phoneNumber: string, options?: EmergencyNumberOptions\): Promise<boolean\>

判断是否是紧急电话号码,使用promise方式作为异步方法。

- 参数

Z
zengyawen 已提交
242 243 244 245
  | 参数        | 类型                   | 必填 | 说明                                                         |
  | ----------- | ---------------------- | ---- | ------------------------------------------------------------ |
  | phoneNumber | string                 | 是   | 电话号码。                                                   |
  | options     | EmergencyNumberOptions | 是   | 手机参数,参考[EmergencyNumberOptions](#EmergencyNumberOptions)。 |
C
clevercong 已提交
246 247 248

- 返回值

Z
zengyawen 已提交
249 250 251
    | 类型                   | 说明                                                |
    | ---------------------- | --------------------------------------------------- |
    | Promise&lt;boolean&gt; | 以Promise形式异步返回判断是否是紧急电话号码的结果。 |
C
clevercong 已提交
252 253 254 255 256 257 258 259 260 261 262 263

-   示例

    ```
    let promise = call.isEmergencyPhoneNumber("138xxxxxxxx", {slotId: 1});
    promise.then(data => {
        console.log(`isEmergencyPhoneNumber success, promise: data->${JSON.stringify(data)}`);
    }).catch(err => {
        console.error(`isEmergencyPhoneNumber fail, promise: err->${JSON.stringify(err)}`);
    });
    ```

Z
zengyawen 已提交
264
## call.formatPhoneNumber<sup>7+</sup><a name=call.formatPhoneNumber-callback1></a>
C
clevercong 已提交
265 266 267 268 269

formatPhoneNumber\(phoneNumber: string, callback: AsyncCallback<string\>\): void

格式化电话号码,使用callback方式作为异步方法。

Z
zengyawen 已提交
270 271 272 273 274 275
- 参数

  | 参数        | 类型                        | 必填 | 说明                                 |
  | ----------- | --------------------------- | ---- | ------------------------------------ |
  | phoneNumber | string                      | 是   | 电话号码。                           |
  | callback    | AsyncCallback&lt;string&gt; | 是   | 回调函数,返回格式化电话号码的结果。 |
C
clevercong 已提交
276 277 278 279 280 281 282 283 284 285

-   示例

    ```
    call.formatPhoneNumber("138xxxxxxxx", (err, data) => {
        console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
    });
    ```


Z
zengyawen 已提交
286
## call.formatPhoneNumber<sup>7+</sup><a name=call.formatPhoneNumber-callback2></a>
C
clevercong 已提交
287 288 289 290 291

formatPhoneNumber\(phoneNumber: string, options: NumberFormatOptions, callback: AsyncCallback<string\>\): void

格式化电话号码,可设置格式化参数,使用callback方式作为异步方法。

Z
zengyawen 已提交
292 293 294 295 296 297 298
- 参数

  | 参数        | 类型                        | 必填 | 说明                                                         |
  | ----------- | --------------------------- | ---- | ------------------------------------------------------------ |
  | phoneNumber | string                      | 是   | 电话号码。                                                   |
  | options     | NumberFormatOptions         | 是   | 格式化参数,参考[NumberFormatOptions](#NumberFormatOptions)。 |
  | callback    | AsyncCallback&lt;string&gt; | 是   | 回调函数,返回格式化电话号码的结果。                         |
C
clevercong 已提交
299 300 301 302 303 304 305 306 307 308 309 310

-   示例

    ```
    call.formatPhoneNumber("138xxxxxxxx",{
        countryCode: "CN"
    }, (err, data) => {
        console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
    });
    ```


Z
zengyawen 已提交
311
## call.formatPhoneNumber<sup>7+</sup><a name=call.formatPhoneNumber-promise></a>
C
clevercong 已提交
312 313 314 315 316

formatPhoneNumber\(phoneNumber: string, options?: NumberFormatOptions\): Promise<string\>

格式化电话号码,可设置格式化参数,使用promise方式作为异步方法。

Z
zengyawen 已提交
317 318 319 320 321 322 323 324 325 326 327 328
- 参数

  | 参数        | 类型                | 必填 | 说明                                                         |
  | ----------- | ------------------- | ---- | ------------------------------------------------------------ |
  | phoneNumber | string              | 是   | 电话号码。                                                   |
  | options     | NumberFormatOptions | 是   | 格式化参数,参考[NumberFormatOptions](#NumberFormatOptions)。 |

- 返回值

  | 类型                  | 说明                                        |
  | --------------------- | ------------------------------------------- |
  | Promise&lt;string&gt; | 以Promise形式异步返回格式化电话号码的结果。 |
C
clevercong 已提交
329 330 331 332 333 334 335 336 337 338 339 340 341 342

-   示例

    ```
    let promise = call.formatPhoneNumber("138xxxxxxxx", {
        countryCode: "CN"
    });
    promise.then(data => {
        console.log(`formatPhoneNumber success, promise: data->${JSON.stringify(data)}`);
    }).catch(err => {
        console.error(`formatPhoneNumber fail, promise: err->${JSON.stringify(err)}`);
    });
    ```

Z
zengyawen 已提交
343
## call.formatPhoneNumberToE164<sup>7+</sup><a name=call.formatPhoneNumberToE164-callback></a>
C
clevercong 已提交
344 345 346 347 348 349 350 351 352

formatPhoneNumberToE164\(phoneNumber: string, countryCode: string, callback: AsyncCallback<string\>\): void

将电话号码格式化为E.164表示形式,使用callback方式作为异步方法。

需要格式化的电话号码需要与传入国家码相匹配,如中国手机号需要传入国家码CN,否则格式化后的手机号为null。

支持所有国家码。

Z
zengyawen 已提交
353 354 355 356 357 358 359
- 参数

  | 参数        | 类型                        | 必填 | 说明                                                  |
  | ----------- | --------------------------- | ---- | ----------------------------------------------------- |
  | phoneNumber | string                      | 是   | 电话号码。                                            |
  | countryCode | string                      | 是   | 国家码,支持所有国家码,如:中国(CN)。              |
  | callback    | AsyncCallback&lt;string&gt; | 是   | 回调函数,返回将电话号码格式化为E.164表示形式的结果。 |
C
clevercong 已提交
360 361 362 363 364 365 366 367 368 369 370 371

-   示例

    ```
    call.formatPhoneNumberToE164("138xxxxxxxx",{
        countryCode: "CN"
    }, (err, data) => {
        console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
    });
    ```


Z
zengyawen 已提交
372
## call.formatPhoneNumberToE164<sup>7+</sup><a name=call.formatPhoneNumberToE164-promise></a>
C
clevercong 已提交
373 374 375 376 377 378 379 380 381

formatPhoneNumberToE164\(phoneNumber: string, countryCode: string\): Promise<string\>

将电话号码格式化为E.164表示形式,使用promise方式作为异步方法。

需要格式化的手机号码需要与传入国家码相匹配,如中国手机号需要传入国家码CN,否则格式化后的手机号为null。

支持所有国家码。

Z
zengyawen 已提交
382 383 384 385 386 387 388 389 390 391 392 393
- 参数

  | 参数        | 类型   | 必填 | 说明                                     |
  | ----------- | ------ | ---- | ---------------------------------------- |
  | phoneNumber | string | 是   | 电话号码。                               |
  | countryCode | string | 是   | 国家码,支持所有国家码,如:中国(CN)。 |

- 返回值

  | 类型                  | 说明                                                         |
  | --------------------- | ------------------------------------------------------------ |
  | Promise&lt;string&gt; | 以Promise形式异步返回将电话号码格式化为E.164表示形式的结果。 |
C
clevercong 已提交
394 395 396 397 398 399 400 401 402 403 404 405 406 407

-   示例

    ```
    let promise = call.formatPhoneNumberToE164("138xxxxxxxx", {
        countryCode: "CN"
    });
    promise.then(data => {
        console.log(`formatPhoneNumberToE164 success, promise: data->${JSON.stringify(data)}`);
    }).catch(err => {
        console.error(`formatPhoneNumberToE164 fail, promise: err->${JSON.stringify(err)}`);
    });
    ```

Z
zengyawen 已提交
408
## DialOptions<a name=DialOptions></a>
C
clevercong 已提交
409 410

拨打电话的可选参数。
Z
zengyawen 已提交
411 412 413
| 参数   | 类型    | 必填 | 说明                                                         |
| ------ | ------- | ---- | ------------------------------------------------------------ |
| extras | boolean | 否   | 根据extras的值判断是否为视频通话,默认为语音通话。<br/>- true:视频通话。<br/>- fasle:语音通话。 |
C
clevercong 已提交
414

Z
zengyawen 已提交
415
## CallState<a name=CallState></a>
C
clevercong 已提交
416 417

通话状态码。
Z
zengyawen 已提交
418 419 420 421 422 423
| 变量               | 值   | 说明                                                         |
| ------------------ | ---- | ------------------------------------------------------------ |
| CALL_STATE_UNKNOWN | -1   | 无效状态,当获取呼叫状态失败时返回。                         |
| CALL_STATE_IDLE    | 0    | 表示没有正在进行的呼叫。                                     |
| CALL_STATE_RINGING | 1    | 表示来电正在振铃或等待。                                     |
| CALL_STATE_OFFHOOK | 2    | 表示至少有一个呼叫处于拨号、通话中或呼叫保持状态,并且没有新的来电振铃或等待。 |
C
clevercong 已提交
424

Z
zengyawen 已提交
425
## EmergencyNumberOptions<sup>7+</sup><a name=EmergencyNumberOptions></a>
C
clevercong 已提交
426 427

判断是否是紧急电话号码的可选参数。
Z
zengyawen 已提交
428 429 430
| 参数   | 类型   | 必填 | 说明                                       |
| ------ | ------ | ---- | ------------------------------------------ |
| slotId | number | 否   | 卡槽ID:<br/>- 0:卡槽1。<br/>- 1:卡槽2。 |
C
clevercong 已提交
431

Z
zengyawen 已提交
432
## NumberFormatOptions<sup>7+</sup><a name=NumberFormatOptions></a>
C
clevercong 已提交
433 434

格式化号码的可选参数。
Z
zengyawen 已提交
435 436 437
| 参数        | 类型   | 必填 | 说明                                                       |
| ----------- | ------ | ---- | ---------------------------------------------------------- |
| countryCode | string | 否   | 国家码,支持所有国家的国家码,如:中国(CN)。默认为:CN。 |