js-apis-call.md 15.7 KB
Newer Older
S
shawn_he 已提交
1 2
# Call

S
shawn_he 已提交
3
>**NOTE**
S
shawn_he 已提交
4
>
Z
zengyawen 已提交
5
>The initial APIs of this module are supported since API version 6. Newly added APIs will be marked with a superscript to indicate their earliest API version.
S
shawn_he 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21


## Modules to Import

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

## call.dial<a name=call.dial-callback1></a>

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

Initiates a call. This function uses an asynchronous callback to return the execution result.

Before using this API, you must declare the **ohos.permission.PLACE\_CALL** permission (a system permission).

S
shawn_he 已提交
22
**Parameters**
S
shawn_he 已提交
23

S
shawn_he 已提交
24 25 26 27 28 29 30 31 32 33 34 35
| Name| Type| Mandatory| Description|
| ----------- | ---------------------------- | ---- | ------------------------------------------------- |
| phoneNumber | string                       | Yes| Phone number.|
| callback    | AsyncCallback&lt;boolean&gt; | Yes| Callback used to return the result.<br/> - **true**: success <br/> - **false**: failure|

**Example**

```
call.dial("138xxxxxxxx", (err, data) => {
    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
```
S
shawn_he 已提交
36 37 38 39 40 41 42 43 44 45


## call.dial<a name=call.dial-callback2></a>

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

Initiates a call. You can set call options as needed. This function uses an asynchronous callback to return the execution result.

Before using this API, you must declare the **ohos.permission.PLACE\_CALL** permission (a system permission).

S
shawn_he 已提交
46
**Parameters**
S
shawn_he 已提交
47

S
shawn_he 已提交
48 49 50 51 52
| Name| Type| Mandatory| Description|
| ----------- | ---------------------------- | ---- | ------------------------------------------------- |
| phoneNumber | string                       | Yes| Phone number.|
| options     | DialOptions                  | Yes| Call options. For details, see [DialOptions](#DialOptions).|
| callback    | AsyncCallback&lt;boolean&gt; | Yes| Callback used to return the result.<br/> - **true**: success <br/> - **false**: failure|
S
shawn_he 已提交
53

S
shawn_he 已提交
54
**Example**
S
shawn_he 已提交
55

S
shawn_he 已提交
56 57 58 59 60 61 62
```
call.dial("138xxxxxxxx", {
    extras: false
}, (err, data) => {
    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
```
S
shawn_he 已提交
63 64 65 66 67 68 69 70 71 72


## call.dial<a name=call.dial-promise></a>

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

Initiates a call. You can set call options as needed. This function uses a promise to return the execution result.

Before using this API, you must declare the **ohos.permission.PLACE\_CALL** permission (a system permission).

S
shawn_he 已提交
73
**Parameters**
S
shawn_he 已提交
74

S
shawn_he 已提交
75 76 77 78
| Name| Type| Mandatory| Description|
| ----------- | ----------- | ---- | ------------------------------------------- |
| phoneNumber | string      | Yes| Phone number.|
| options     | DialOptions | Yes| Call options. For details, see [DialOptions](#DialOptions).|
S
shawn_he 已提交
79

S
shawn_he 已提交
80
**Return value**
S
shawn_he 已提交
81

S
shawn_he 已提交
82 83 84
| Type| Description|
| ---------------------- | --------------------------------- |
| Promise&lt;boolean&gt; | Promise used to return the result.|
S
shawn_he 已提交
85

S
shawn_he 已提交
86
**Example**
S
shawn_he 已提交
87

S
shawn_he 已提交
88 89 90 91 92 93 94 95 96 97
```
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)}`);
});
```
S
shawn_he 已提交
98 99 100 101 102 103 104

## call.hasCall<a name=call.hasCall-callback></a>

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

Checks whether a call is in progress. This function uses an asynchronous callback to return the result.

S
shawn_he 已提交
105
**Parameters**
S
shawn_he 已提交
106

S
shawn_he 已提交
107 108 109
| Name| Type| Mandatory| Description|
| -------- | ---------------------------- | ---- | ------------------------------------------------------------ |
| callback | AsyncCallback&lt;boolean&gt; | Yes| Callback used to return the result: <br/> - **true**: A call is in progress. <br/> - **false**: No call is in progress. |
S
shawn_he 已提交
110

S
shawn_he 已提交
111
**Example**
S
shawn_he 已提交
112

S
shawn_he 已提交
113 114 115 116 117
```
call.hasCall((err, data) => {
    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
```
S
shawn_he 已提交
118 119 120 121 122 123 124 125


## call.hasCall<a name=call.hasCall-promise></a>

hasCall\(\): Promise<boolean\>

Checks whether a call is in progress. This function uses a promise to return the result.

S
shawn_he 已提交
126
**Return value**
S
shawn_he 已提交
127

S
shawn_he 已提交
128 129 130
| Type| Description|
| ---------------------- | --------------------------------------- |
| Promise&lt;boolean&gt; | Promise used to return the result.|
S
shawn_he 已提交
131

S
shawn_he 已提交
132
**Example**
S
shawn_he 已提交
133

S
shawn_he 已提交
134 135 136 137 138 139 140 141
```
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)}`);
});
```
S
shawn_he 已提交
142 143 144 145 146 147 148 149


## call.getCallState<a name=call.getCallState-callback></a>

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

Obtains the call status. This function uses an asynchronous callback to return the result.

S
shawn_he 已提交
150
**Parameters**
S
shawn_he 已提交
151

S
shawn_he 已提交
152 153 154
| Name| Type| Mandatory| Description|
| -------- | -------------------------------------------- | ---- | ------------------------------------ |
| callback | AsyncCallback&lt;[CallState](#CallState)&gt; | Yes| Callback used to return the result.|
S
shawn_he 已提交
155

S
shawn_he 已提交
156
**Example**
S
shawn_he 已提交
157

S
shawn_he 已提交
158 159 160 161 162
```
call.getCallState((err, data) => {
    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
```
S
shawn_he 已提交
163 164 165 166 167 168 169 170


## call.getCallState<a name="call.getCallState-promise"></a>

getCallState\(\): Promise<CallState\>

Obtains the call status. This function uses a promise to return the result.

S
shawn_he 已提交
171
**Return value**
S
shawn_he 已提交
172

S
shawn_he 已提交
173 174 175
| Type| Description|
| -------------------------------------- | ----------------------------------------- |
| Promise&lt;[CallState](#CallState)&gt; | Promise used to return the result.|
S
shawn_he 已提交
176

S
shawn_he 已提交
177
**Example**
S
shawn_he 已提交
178

S
shawn_he 已提交
179 180 181 182 183 184 185 186
```
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)}`);
});
```
S
shawn_he 已提交
187 188 189 190 191

## call.isEmergencyPhoneNumber<sup>7+</sup><a name=call.isEmergencyPhoneNumber-callback1></a>

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

S
shawn_he 已提交
192
Checks whether the call number of the SIM card in the specified slot is an emergency number. This function uses an asynchronous callback to return the result.
S
shawn_he 已提交
193

S
shawn_he 已提交
194
**Parameters**
S
shawn_he 已提交
195

S
shawn_he 已提交
196 197 198 199
| Name| Type| Mandatory| Description|
| ----------- | ---------------------------- | ---- | ------------------------------------------------------------ |
| phoneNumber | string                       | Yes| Phone number.|
| callback    | AsyncCallback&lt;boolean&gt; | Yes| Callback used to return the result.<br/> - **true**: The called number is an emergency number. <br/> - **false**: The called number is not an emergency number.|
S
shawn_he 已提交
200

S
shawn_he 已提交
201
**Example**
S
shawn_he 已提交
202

S
shawn_he 已提交
203 204 205 206 207
```
call.isEmergencyPhoneNumber("138xxxxxxxx", (err, data) => {
    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
```
S
shawn_he 已提交
208 209 210 211 212 213


## call.isEmergencyPhoneNumber<sup>7+</sup><a name=call.isEmergencyPhoneNumber-callback2></a>

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

S
shawn_he 已提交
214
Checks whether the call number of the SIM card in the specified slot is an emergency number. This function uses an asynchronous callback to return the result.
S
shawn_he 已提交
215

S
shawn_he 已提交
216
**Parameters**
S
shawn_he 已提交
217

S
shawn_he 已提交
218 219 220 221 222
| Name| Type| Mandatory| Description|
| ----------- | ---------------------------- | ---- | ------------------------------------------------------------ |
| phoneNumber | string                       | Yes| Phone number.|
| options     | EmergencyNumberOptions       | Yes| Emergency number options defined in [EmergencyNumberOptions](#EmergencyNumberOptions).|
| callback    | AsyncCallback&lt;boolean&gt; | Yes| Callback used to return the result.<br/> - **true**: The called number is an emergency number. <br/> - **false**: The called number is not an emergency number.|
S
shawn_he 已提交
223

S
shawn_he 已提交
224
**Example**
S
shawn_he 已提交
225

S
shawn_he 已提交
226 227 228 229 230
```
call.isEmergencyPhoneNumber("112", {slotId: 1}, (err, value) => {
    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
```
S
shawn_he 已提交
231 232 233 234 235 236


## call.isEmergencyPhoneNumber<sup>7+</sup><a name=call.isEmergencyPhoneNumber-promise></a>

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

S
shawn_he 已提交
237
Checks whether the call number of the SIM card in the specified slot is an emergency number. This function uses a promise to return the result.
S
shawn_he 已提交
238

S
shawn_he 已提交
239
**Parameters**
S
shawn_he 已提交
240

S
shawn_he 已提交
241 242 243 244
| Name| Type| Mandatory| Description|
| ----------- | ---------------------- | ---- | ------------------------------------------------------------ |
| phoneNumber | string                 | Yes| Phone number.|
| options     | EmergencyNumberOptions | Yes| Emergency number options defined in [EmergencyNumberOptions](#EmergencyNumberOptions).|
S
shawn_he 已提交
245

S
shawn_he 已提交
246
**Return value**
S
shawn_he 已提交
247

S
shawn_he 已提交
248 249 250
| Type| Description|
| ---------------------- | --------------------------------------------------- |
| Promise&lt;boolean&gt; | Promise used to return the result.|
S
shawn_he 已提交
251

S
shawn_he 已提交
252
**Example**
S
shawn_he 已提交
253

S
shawn_he 已提交
254 255 256 257 258 259 260 261
```
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)}`);
});
```
S
shawn_he 已提交
262 263 264 265 266

## call.formatPhoneNumber<sup>7+</sup><a name=call.formatPhoneNumber-callback1></a>

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

S
shawn_he 已提交
267
Formats a phone number based on the specified ISO country code. This function uses an asynchronous callback to return the result.
S
shawn_he 已提交
268

S
shawn_he 已提交
269
**Parameters**
S
shawn_he 已提交
270

S
shawn_he 已提交
271 272 273 274
| Name| Type| Mandatory| Description|
| ----------- | --------------------------- | ---- | ------------------------------------ |
| phoneNumber | string                      | Yes| Phone number.|
| callback    | AsyncCallback&lt;string&gt; | Yes| Callback used to return the result.|
S
shawn_he 已提交
275

S
shawn_he 已提交
276
**Example**
S
shawn_he 已提交
277

S
shawn_he 已提交
278 279 280 281 282
```
call.formatPhoneNumber("138xxxxxxxx", (err, data) => {
    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
```
S
shawn_he 已提交
283 284 285 286 287 288 289 290


## call.formatPhoneNumber<sup>7+</sup><a name=call.formatPhoneNumber-callback2></a>

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

Formats a phone number based on specified formatting options. This function uses an asynchronous callback to return the result.

S
shawn_he 已提交
291
**Parameters**
S
shawn_he 已提交
292

S
shawn_he 已提交
293 294 295 296 297
| Name| Type| Mandatory| Description|
| ----------- | --------------------------- | ---- | ------------------------------------------------------------ |
| phoneNumber | string                      | Yes| Phone number.|
| options     | NumberFormatOptions         | Yes| Number formatting options defined in [NumberFormatOptions](#NumberFormatOptions).|
| callback    | AsyncCallback&lt;string&gt; | Yes| Callback used to return the result.|
S
shawn_he 已提交
298

S
shawn_he 已提交
299
**Example**
S
shawn_he 已提交
300

S
shawn_he 已提交
301 302 303 304 305 306 307
```
call.formatPhoneNumber("138xxxxxxxx",{
    countryCode: "CN"
}, (err, data) => {
    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
```
S
shawn_he 已提交
308 309 310 311 312 313 314 315


## call.formatPhoneNumber<sup>7+</sup><a name=call.formatPhoneNumber-promise></a>

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

Formats a phone number based on specified formatting options. This function uses a promise to return the result.

S
shawn_he 已提交
316
**Parameters**
S
shawn_he 已提交
317

S
shawn_he 已提交
318 319 320 321
| Name| Type| Mandatory| Description|
| ----------- | ------------------- | ---- | ------------------------------------------------------------ |
| phoneNumber | string              | Yes| Phone number.|
| options     | NumberFormatOptions | Yes| Number formatting options defined in [NumberFormatOptions](#NumberFormatOptions).|
S
shawn_he 已提交
322

S
shawn_he 已提交
323
**Return value**
S
shawn_he 已提交
324

S
shawn_he 已提交
325 326 327
| Type| Description|
| --------------------- | ------------------------------------------- |
| Promise&lt;string&gt; | Promise used to return the result.|
S
shawn_he 已提交
328

S
shawn_he 已提交
329
**Example**
S
shawn_he 已提交
330

S
shawn_he 已提交
331 332 333 334 335 336 337 338 339 340
```
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)}`);
});
```
S
shawn_he 已提交
341 342 343 344 345 346 347 348 349 350 351

## call.formatPhoneNumberToE164<sup>7+</sup><a name=call.formatPhoneNumberToE164-callback></a>

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

Converts a phone number into the E.164 format. This function uses an asynchronous callback to return the result.

The phone number must match the specified country code. For example, for a China phone number, the country code must be **CN**. Otherwise, **null** will be returned.

All country codes are supported.

S
shawn_he 已提交
352
**Parameters**
S
shawn_he 已提交
353

S
shawn_he 已提交
354 355 356 357 358
| Name| Type| Mandatory| Description|
| ----------- | --------------------------- | ---- | ----------------------------------------------------- |
| phoneNumber | string                      | Yes| Phone number.|
| countryCode | string                      | Yes| Country code, for example, **CN** (China). All country codes are supported.|
| callback    | AsyncCallback&lt;string&gt; | Yes| Callback used to return the result.|
S
shawn_he 已提交
359

S
shawn_he 已提交
360
**Example**
S
shawn_he 已提交
361

S
shawn_he 已提交
362 363 364 365 366 367 368
```
call.formatPhoneNumberToE164("138xxxxxxxx",{
    countryCode: "CN"
}, (err, data) => {
    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
});
```
S
shawn_he 已提交
369 370 371 372 373 374 375 376 377 378 379 380


## call.formatPhoneNumberToE164<sup>7+</sup><a name=call.formatPhoneNumberToE164-promise></a>

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

Converts a phone number into the E.164 format. This function uses a promise to return the result.

The phone number must match the specified country code. For example, for a China phone number, the country code must be **CN**. Otherwise, **null** will be returned.

All country codes are supported.

S
shawn_he 已提交
381
**Parameters**
S
shawn_he 已提交
382

S
shawn_he 已提交
383 384 385 386
| Name| Type| Mandatory| Description|
| ----------- | ------ | ---- | ---------------------------------------- |
| phoneNumber | string | Yes| Phone number.|
| countryCode | string | Yes| Country code, for example, **CN** (China). All country codes are supported.|
S
shawn_he 已提交
387

S
shawn_he 已提交
388
**Return value**
S
shawn_he 已提交
389

S
shawn_he 已提交
390 391 392
| Type| Description|
| --------------------- | ------------------------------------------------------------ |
| Promise&lt;string&gt; | Promise used to return the result.|
S
shawn_he 已提交
393

S
shawn_he 已提交
394
**Example**
S
shawn_he 已提交
395

S
shawn_he 已提交
396 397 398 399 400 401 402 403 404 405
```
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)}`);
});
```
S
shawn_he 已提交
406 407 408 409

## DialOptions<a name=DialOptions></a>

Provides an option for determining whether a call is a video call.
S
shawn_he 已提交
410 411 412
| Parameter| Type| Mandatory| Description|
| ------ | ------- | ---- | ------------------------------------------------------------ |
| extras | boolean | No| Indication of a video call. The options are as follows: <br/> - **true**: video call <br/> - **false**: voice call|
S
shawn_he 已提交
413 414 415 416 417

## CallState<a name=CallState></a>

Enumerates call states.
| Variable| Value| Description|
S
shawn_he 已提交
418 419 420 421 422
| ------------------ | ---- | ------------------------------------------------------------ |
| CALL_STATE_UNKNOWN | -1   | The call status fails to be obtained and is unknown.|
| CALL_STATE_IDLE    | 0    | No call is in progress.|
| CALL_STATE_RINGING | 1    | The call is in the ringing or waiting state.|
| CALL_STATE_OFFHOOK | 2    | At least one call is in dialing, active, or on hold, and no new incoming call is ringing or waiting.|
S
shawn_he 已提交
423 424 425 426

## EmergencyNumberOptions<sup>7+</sup><a name=EmergencyNumberOptions></a>

Provides an option for determining whether a number is an emergency number for the SIM card in the specified slot.
S
shawn_he 已提交
427 428 429
| Parameter| Type| Mandatory| Description|
| ------ | ------ | ---- | ------------------------------------------ |
| slotId | number | No| SIM card slot ID.<br/> - **0**: slot 1 <br/> - **1**: slot 2|
S
shawn_he 已提交
430 431 432 433

## NumberFormatOptions<sup>7+</sup><a name=NumberFormatOptions></a>

Provides an option for number formatting.
S
shawn_he 已提交
434 435 436
| Parameter| Type| Mandatory| Description|
| ----------- | ------ | ---- | ---------------------------------------------------------- |
| countryCode | string | No| Country code, for example, **CN** (China). All country codes are supported. The default value is **CN**.|