• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 拨打电话
2
3该模块提供呼叫管理功能,包括拨打电话、跳转到拨号界面、获取通话状态、格式化电话号码等。
4
5如需订阅通话状态请使用[`observer.on('callStateChange')`](js-apis-observer.md#observeroncallstatechange)。
6
7>**说明:**
8>
9>本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
10
11## 导入模块
12
13```js
14import call from '@ohos.telephony.call';
15```
16
17## call.dial
18
19dial\(phoneNumber: string, callback: AsyncCallback<boolean\>\): void
20
21拨打电话。使用callback异步回调。
22
23**需要权限**:ohos.permission.PLACE\_CALL,该权限为系统权限
24
25**系统能力**:SystemCapability.Telephony.CallManager
26
27**参数:**
28
29| 参数名      | 类型                         | 必填 | 说明                                    |
30| ----------- | ---------------------------- | ---- | --------------------------------------- |
31| phoneNumber | string                       | 是   | 电话号码。                              |
32| callback    | AsyncCallback&lt;boolean&gt; | 是   | 回调函数,返回true为成功,false为失败。 |
33
34**示例:**
35
36```js
37call.dial("138xxxxxxxx", (err, data) => {
38    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
39});
40```
41
42
43## call.dial
44
45dial\(phoneNumber: string, options: DialOptions, callback: AsyncCallback<boolean\>\): void
46
47拨打电话,可设置通话参数。使用callback异步回调。
48
49**需要权限**:ohos.permission.PLACE\_CALL,该权限为系统权限
50
51**系统能力**:SystemCapability.Telephony.CallManager
52
53**参数:**
54
55| 参数名      | 类型                         | 必填 | 说明                                    |
56| ----------- | ---------------------------- | ---- | --------------------------------------- |
57| phoneNumber | string                       | 是   | 电话号码。                              |
58| options     | [DialOptions](#dialoptions)  | 是   | 通话参数,选择为语音通话还是视频通话。  |
59| callback    | AsyncCallback&lt;boolean&gt; | 是   | 回调函数,返回true为成功,false为失败。 |
60
61**示例:**
62
63```js
64call.dial("138xxxxxxxx", {
65    extras: false
66}, (err, data) => {
67    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
68});
69```
70
71
72## call.dial
73
74dial\(phoneNumber: string, options?: DialOptions\): Promise<boolean\>
75
76拨打电话,可设置通话参数。使用Promise异步回调。
77
78**需要权限**:ohos.permission.PLACE\_CALL,该权限为系统权限
79
80**系统能力**:SystemCapability.Telephony.CallManager
81
82**参数:**
83
84| 参数名      | 类型                        | 必填 | 说明                                   |
85| ----------- | --------------------------- | ---- | -------------------------------------- |
86| phoneNumber | string                      | 是   | 电话号码。                             |
87| options     | [DialOptions](#dialoptions) | 是   | 通话参数,选择为语音通话还是视频通话。 |
88
89**返回值:**
90
91| 类型                   | 说明                                                         |
92| ---------------------- | ------------------------------------------------------------ |
93| Promise&lt;boolean&gt; | 以Promise形式返回拨打电话的结果,返回true为成功,false为失败。 |
94
95**示例:**
96
97```js
98let promise = call.dial("138xxxxxxxx", {
99    extras: false
100});
101promise.then(data => {
102    console.log(`dial success, promise: data->${JSON.stringify(data)}`);
103}).catch(err => {
104    console.error(`dial fail, promise: err->${JSON.stringify(err)}`);
105});
106```
107
108## call.makeCall<sup>7+</sup>
109
110makeCall(phoneNumber: string, callback: AsyncCallback\<void\>): void
111
112跳转到拨号界面,并显示待拨出的号码。使用callback异步回调。
113
114**系统能力**:SystemCapability.Applications.Contacts
115
116**参数:**
117
118| 参数名      | 类型                      | 必填 | 说明                                       |
119| ----------- | ------------------------- | ---- | ------------------------------------------ |
120| phoneNumber | string                    | 是   | 电话号码。                                 |
121| callback    | AsyncCallback&lt;void&gt; | 是   | 以callback形式异步返回跳转拨号界面的结果。 |
122
123**示例:**
124
125```js
126call.makeCall("138xxxxxxxx", err => {
127    console.log(`makeCall callback: err->${JSON.stringify(err)}`);
128});
129```
130
131
132## call.makeCall<sup>7+</sup>
133
134makeCall(phoneNumber: string): Promise\<void\>
135
136跳转到拨号界面,并显示待拨出的号码。使用Promise异步回调。
137
138**系统能力**:SystemCapability.Applications.Contacts
139
140**参数:**
141
142| 参数名      | 类型   | 必填 | 说明       |
143| ----------- | ------ | ---- | ---------- |
144| phoneNumber | string | 是   | 电话号码。 |
145
146**返回值:**
147
148| 类型                | 说明                              |
149| ------------------- | --------------------------------- |
150| Promise&lt;void&gt; | 以Promise形式异步返回拨号的结果。 |
151
152**示例:**
153
154```js
155let promise = call.makeCall("138xxxxxxxx");
156promise.then(() => {
157    console.log(`makeCall success`);
158}).catch(err => {
159    console.error(`makeCall fail, promise: err->${JSON.stringify(err)}`);
160});
161```
162
163## call.hasCall
164
165hasCall\(callback: AsyncCallback<boolean\>\): void
166
167判断是否存在通话。使用callback异步回调。
168
169**系统能力**:SystemCapability.Telephony.CallManager
170
171**参数:**
172
173| 参数名   | 类型                         | 必填 | 说明                                                         |
174| -------- | ---------------------------- | ---- | ------------------------------------------------------------ |
175| callback | AsyncCallback&lt;boolean&gt; | 是   | 回调函数。返回true表示当前存在通话,false表示当前不存在通话。 |
176
177**示例:**
178
179```js
180call.hasCall((err, data) => {
181    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
182});
183```
184
185
186## call.hasCall
187
188hasCall\(\): Promise<boolean\>
189
190判断是否存在通话。使用Promise异步回调。
191
192**系统能力**:SystemCapability.Telephony.CallManager
193
194**返回值:**
195
196| 类型                   | 说明                                    |
197| ---------------------- | --------------------------------------- |
198| Promise&lt;boolean&gt; | 以Promise形式异步返回判断是否存在通话。 |
199
200**示例:**
201
202```js
203let promise = call.hasCall();
204promise.then(data => {
205    console.log(`hasCall success, promise: data->${JSON.stringify(data)}`);
206}).catch(err => {
207    console.error(`hasCall fail, promise: err->${JSON.stringify(err)}`);
208});
209```
210
211
212## call.getCallState
213
214getCallState\(callback: AsyncCallback<CallState\>\): void
215
216获取当前通话状态。使用callback异步回调。
217
218**系统能力**:SystemCapability.Telephony.CallManager
219
220**参数:**
221
222| 参数名   | 类型                                         | 必填 | 说明                                 |
223| -------- | -------------------------------------------- | ---- | ------------------------------------ |
224| callback | AsyncCallback&lt;[CallState](#callstate)&gt; | 是   | 回调函数,异步返回获取到的通话状态。 |
225
226**示例:**
227
228```js
229call.getCallState((err, data) => {
230    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
231});
232```
233
234
235## call.getCallState
236
237getCallState\(\): Promise<CallState\>
238
239获取当前通话状态。使用Promise异步回调。
240
241**系统能力**:SystemCapability.Telephony.CallManager
242
243**返回值:**
244
245| 类型                                   | 说明                                    |
246| -------------------------------------- | --------------------------------------- |
247| Promise&lt;[CallState](#callstate)&gt; | 以Promise形式异步返回获取到的通话状态。 |
248
249**示例:**
250
251```js
252let promise = call.getCallState();
253promise.then(data => {
254    console.log(`getCallState success, promise: data->${JSON.stringify(data)}`);
255}).catch(err => {
256    console.error(`getCallState fail, promise: err->${JSON.stringify(err)}`);
257});
258```
259
260## call.hasVoiceCapability<sup>7+</sup>
261
262hasVoiceCapability(): boolean
263
264检查当前设备是否具备语音通话能力。
265
266**系统能力**:SystemCapability.Telephony.CallManager
267
268**返回值:**
269
270| 类型    | 说明                                                         |
271| ------- | ------------------------------------------------------------ |
272| boolean | 返回true表示设备具备语音通话能力,返回false表示设备不具备语音通话能力。 |
273
274```js
275let result = call.hasVoiceCapability();
276console.log(`hasVoiceCapability: ${JSON.stringify(result)}`);
277```
278
279## call.isEmergencyPhoneNumber<sup>7+</sup>
280
281isEmergencyPhoneNumber\(phoneNumber: string, callback: AsyncCallback<boolean\>\): void
282
283判断是否是紧急电话号码。使用callback异步回调。
284
285**系统能力**:SystemCapability.Telephony.CallManager
286
287**参数:**
288
289| 参数名      | 类型                         | 必填 | 说明                                                         |
290| ----------- | ---------------------------- | ---- | ------------------------------------------------------------ |
291| phoneNumber | string                       | 是   | 电话号码。                                                   |
292| callback    | AsyncCallback&lt;boolean&gt; | 是   | 回调函数。返回true表示是紧急电话号码,返回false表示不是紧急电话号码。 |
293
294**示例:**
295
296```js
297call.isEmergencyPhoneNumber("138xxxxxxxx", (err, data) => {
298    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
299});
300```
301
302
303## call.isEmergencyPhoneNumber<sup>7+</sup>
304
305isEmergencyPhoneNumber\(phoneNumber: string, options: EmergencyNumberOptions, callback: AsyncCallback<boolean\>\): void
306
307根据电话号码参数,判断是否是紧急电话号码。使用callback异步回调。
308
309**系统能力**:SystemCapability.Telephony.CallManager
310
311**参数:**
312
313| 参数名      | 类型                                               | 必填 | 说明                                                         |
314| ----------- | -------------------------------------------------- | ---- | ------------------------------------------------------------ |
315| phoneNumber | string                                             | 是   | 电话号码。                                                   |
316| options     | [EmergencyNumberOptions](#emergencynumberoptions7) | 是   | 电话号码参数。                                               |
317| callback    | AsyncCallback&lt;boolean&gt;                       | 是   | 回调函数。返回true表示是紧急电话号码,返回false表示不是紧急电话号码。 |
318
319**示例:**
320
321```js
322call.isEmergencyPhoneNumber("112", {slotId: 1}, (err, value) => {
323    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
324});
325```
326
327
328## call.isEmergencyPhoneNumber<sup>7+</sup>
329
330isEmergencyPhoneNumber\(phoneNumber: string, options?: EmergencyNumberOptions\): Promise<boolean\>
331
332根据电话号码参数,判断是否是紧急电话号码。使用Promise异步回调。
333
334**系统能力**:SystemCapability.Telephony.CallManager
335
336**参数:**
337
338| 参数名      | 类型                                               | 必填 | 说明           |
339| ----------- | -------------------------------------------------- | ---- | -------------- |
340| phoneNumber | string                                             | 是   | 电话号码。     |
341| options     | [EmergencyNumberOptions](#emergencynumberoptions7) | 是   | 电话号码参数。 |
342
343**返回值:**
344
345| 类型                   | 说明                                                |
346| ---------------------- | --------------------------------------------------- |
347| Promise&lt;boolean&gt; | 以Promise形式异步返回判断是否是紧急电话号码的结果。 |
348
349**示例:**
350
351```js
352let promise = call.isEmergencyPhoneNumber("138xxxxxxxx", {slotId: 1});
353promise.then(data => {
354    console.log(`isEmergencyPhoneNumber success, promise: data->${JSON.stringify(data)}`);
355}).catch(err => {
356    console.error(`isEmergencyPhoneNumber fail, promise: err->${JSON.stringify(err)}`);
357});
358```
359
360## call.formatPhoneNumber<sup>7+</sup>
361
362formatPhoneNumber\(phoneNumber: string, callback: AsyncCallback<string\>\): void
363
364格式化电话号码。使用callback异步回调。
365
366电话号码格式化后为标准数字字串,例如:“138 xxxx xxxx”、“0755 xxxx xxxx”。
367
368**系统能力**:SystemCapability.Telephony.CallManager
369
370**参数:**
371
372| 参数名      | 类型                        | 必填 | 说明                                 |
373| ----------- | --------------------------- | ---- | ------------------------------------ |
374| phoneNumber | string                      | 是   | 电话号码。                           |
375| callback    | AsyncCallback&lt;string&gt; | 是   | 回调函数,返回格式化电话号码的结果。 |
376
377**示例:**
378
379```js
380call.formatPhoneNumber("138xxxxxxxx", (err, data) => {
381    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
382});
383```
384
385## call.formatPhoneNumber<sup>7+</sup>
386
387formatPhoneNumber\(phoneNumber: string, options: NumberFormatOptions, callback: AsyncCallback<string\>\): void
388
389格式化电话号码,可设置格式化参数。使用callback异步回调。
390
391电话号码格式化后为标准数字字串,例如:“138 xxxx xxxx”、“0755 xxxx xxxx”。
392
393**系统能力**:SystemCapability.Telephony.CallManager
394
395**参数:**
396
397| 参数名      | 类型                                         | 必填 | 说明                                 |
398| ----------- | -------------------------------------------- | ---- | ------------------------------------ |
399| phoneNumber | string                                       | 是   | 电话号码。                           |
400| options     | [NumberFormatOptions](#numberformatoptions7) | 是   | 格式化参数,如国家码。               |
401| callback    | AsyncCallback&lt;string&gt;                  | 是   | 回调函数,返回格式化电话号码的结果。 |
402
403**示例:**
404
405```js
406call.formatPhoneNumber("138xxxxxxxx",{
407    countryCode: "CN"
408}, (err, data) => {
409    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
410});
411```
412
413
414## call.formatPhoneNumber<sup>7+</sup>
415
416formatPhoneNumber\(phoneNumber: string, options?: NumberFormatOptions\): Promise<string\>
417
418格式化电话号码,可设置格式化参数。使用Promise异步回调。
419
420电话号码格式化后为标准数字字串,例如:“138 xxxx xxxx”、“0755 xxxx xxxx”。
421
422**系统能力**:SystemCapability.Telephony.CallManager
423
424**参数:**
425
426| 参数名      | 类型                                         | 必填 | 说明                   |
427| ----------- | -------------------------------------------- | ---- | ---------------------- |
428| phoneNumber | string                                       | 是   | 电话号码。             |
429| options     | [NumberFormatOptions](#numberformatoptions7) | 是   | 格式化参数,如国家码。 |
430
431**返回值:**
432
433| 类型                  | 说明                                        |
434| --------------------- | ------------------------------------------- |
435| Promise&lt;string&gt; | 以Promise形式异步返回格式化电话号码的结果。 |
436
437**示例:**
438
439```js
440let promise = call.formatPhoneNumber("138xxxxxxxx", {
441    countryCode: "CN"
442});
443promise.then(data => {
444    console.log(`formatPhoneNumber success, promise: data->${JSON.stringify(data)}`);
445}).catch(err => {
446    console.error(`formatPhoneNumber fail, promise: err->${JSON.stringify(err)}`);
447});
448```
449
450## call.formatPhoneNumberToE164<sup>7+</sup>
451
452formatPhoneNumberToE164\(phoneNumber: string, countryCode: string, callback: AsyncCallback<string\>\): void
453
454将电话号码格式化为E.164表示形式。使用callback异步回调。
455
456待格式化的电话号码需要与传入的国家码相匹配,如中国电话号码需要传入国家码CN,否则格式化后的电话号码为null。
457
458**系统能力**:SystemCapability.Telephony.CallManager
459
460**参数:**
461
462| 参数名      | 类型                        | 必填 | 说明                                                  |
463| ----------- | --------------------------- | ---- | ----------------------------------------------------- |
464| phoneNumber | string                      | 是   | 电话号码。                                            |
465| countryCode | string                      | 是   | 国家码,支持所有国家码,如:中国(CN)。              |
466| callback    | AsyncCallback&lt;string&gt; | 是   | 回调函数,返回将电话号码格式化为E.164表示形式的结果。 |
467
468**示例:**
469
470```js
471call.formatPhoneNumberToE164("138xxxxxxxx",{
472    countryCode: "CN"
473}, (err, data) => {
474    console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
475});
476```
477
478
479## call.formatPhoneNumberToE164<sup>7+</sup>
480
481formatPhoneNumberToE164\(phoneNumber: string, countryCode: string\): Promise<string\>
482
483将电话号码格式化为E.164表示形式。使用Promise异步回调。
484
485待格式化的电话号码需要与传入的国家码相匹配,如中国电话号码需要传入国家码CN,否则格式化后的电话号码为null。
486
487支持所有国家码。
488
489**系统能力**:SystemCapability.Telephony.CallManager
490
491**参数:**
492
493| 参数名      | 类型   | 必填 | 说明                                     |
494| ----------- | ------ | ---- | ---------------------------------------- |
495| phoneNumber | string | 是   | 电话号码。                               |
496| countryCode | string | 是   | 国家码,支持所有国家码,如:中国(CN)。 |
497
498**返回值:**
499
500| 类型                  | 说明                                                         |
501| --------------------- | ------------------------------------------------------------ |
502| Promise&lt;string&gt; | 以Promise形式异步返回将电话号码格式化为E.164表示形式的结果。 |
503
504**示例:**
505
506```js
507let promise = call.formatPhoneNumberToE164("138xxxxxxxx", {
508    countryCode: "CN"
509});
510promise.then(data => {
511    console.log(`formatPhoneNumberToE164 success, promise: data->${JSON.stringify(data)}`);
512}).catch(err => {
513    console.error(`formatPhoneNumberToE164 fail, promise: err->${JSON.stringify(err)}`);
514});
515```
516
517## DialOptions
518
519拨打电话的可选参数。
520
521**系统能力**:以下各项对应的系统能力均为SystemCapability.Telephony.CallManager522
523| 参数名 | 类型    | 必填 | 说明                                                         |
524| ------ | ------- | ---- | ------------------------------------------------------------ |
525| extras | boolean | 否   | 根据extras的值判断是否为视频通话,默认为语音通话。<br/>- true:视频通话。<br/>- false:语音通话。 |
526
527## CallState
528
529通话状态码。
530
531**系统能力**:以下各项对应的系统能力均为SystemCapability.Telephony.CallManager532
533| 名称               | 值   | 说明                                                         |
534| ------------------ | ---- | ------------------------------------------------------------ |
535| CALL_STATE_UNKNOWN | -1   | 无效状态,当获取呼叫状态失败时返回。                         |
536| CALL_STATE_IDLE    | 0    | 表示没有正在进行的呼叫。                                     |
537| CALL_STATE_RINGING | 1    | 表示来电正在振铃或等待。                                     |
538| CALL_STATE_OFFHOOK | 2    | 表示至少有一个呼叫处于拨号、通话中或呼叫保持状态,并且没有新的来电振铃或等待。 |
539
540## EmergencyNumberOptions<sup>7+</sup>
541
542判断是否是紧急电话号码的可选参数。
543
544**系统能力**:以下各项对应的系统能力均为SystemCapability.Telephony.CallManager545
546| 参数名 | 类型   | 必填 | 说明                                           |
547| ------ | ------ | ---- | ---------------------------------------------- |
548| slotId | number | 否   | 卡槽ID:<br/>- 卡槽1:`0`。<br/>- 卡槽2:`1`。 |
549
550## NumberFormatOptions<sup>7+</sup>
551
552格式化号码的可选参数。
553
554**系统能力**:以下各项对应的系统能力均为SystemCapability.Telephony.CallManager555
556| 参数名      | 类型   | 必填 | 说明                                                       |
557| ----------- | ------ | ---- | ---------------------------------------------------------- |
558| countryCode | string | 否   | 国家码,支持所有国家的国家码,如:CN(中国)。默认为:CN。 |