撥打電話

2024-01-23 16:35 更新

該模塊提供呼叫管理功能,包括撥打電話、跳轉(zhuǎn)到撥號界面、獲取通話狀態(tài)、格式化電話號碼等。

如需訂閱通話狀態(tài)請使用observer.on('callStateChange')。

說明

本模塊首批接口從API version 6開始支持。后續(xù)版本的新增接口,采用上角標單獨標記接口的起始版本。

導入模塊

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

call.dial(deprecated)

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

撥打電話。使用callback異步回調(diào)。

說明

從API version 6 開始支持,從API version 9 開始廢棄。替代接口能力僅對系統(tǒng)應用開放。

需要權(quán)限:ohos.permission.PLACE_CALL,該權(quán)限為系統(tǒng)權(quán)限

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

callback

AsyncCallback<boolean>

回調(diào)函數(shù),返回true為成功,false為失敗。

示例:

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

call.dial(deprecated)

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

撥打電話,可設(shè)置通話參數(shù)。使用callback異步回調(diào)。

說明

從API version 6 開始支持,從API version 9 開始廢棄。替代接口能力僅對系統(tǒng)應用開放。

需要權(quán)限:ohos.permission.PLACE_CALL,該權(quán)限為系統(tǒng)權(quán)限

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

options

DialOptions

通話參數(shù),選擇為語音通話還是視頻通話。

callback

AsyncCallback<boolean>

回調(diào)函數(shù),返回true為成功,false為失敗。

示例:

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

call.dial(deprecated)

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

撥打電話,可設(shè)置通話參數(shù)。使用Promise異步回調(diào)。

說明

從API version 6 開始支持,從API version 9 開始廢棄。替代接口能力僅對系統(tǒng)應用開放。

需要權(quán)限:ohos.permission.PLACE_CALL,該權(quán)限為系統(tǒng)權(quán)限

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

options

DialOptions

通話參數(shù),選擇為語音通話還是視頻通話。

返回值:

類型

說明

Promise<boolean>

以Promise形式返回撥打電話的結(jié)果,返回true為成功,false為失敗。

示例:

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

call.makeCall7+

makeCall(phoneNumber: string, callback: AsyncCallback<void>): void

跳轉(zhuǎn)到撥號界面,并顯示待撥出的號碼。使用callback異步回調(diào)。

系統(tǒng)能力:SystemCapability.Applications.Contacts

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

callback

AsyncCallback<void>

以callback形式異步返回跳轉(zhuǎn)撥號界面的結(jié)果。

錯誤碼:

以下錯誤碼的詳細介紹請參見ohos.telephony(電話子系統(tǒng))錯誤碼錯誤碼。

錯誤碼ID

錯誤信息

401

Parameter error.

8300001

Invalid parameter value.

8300002

Operation failed. Cannot connect to service.

8300003

System internal error.

8300999

Unknown error code.

示例:

  1. call.makeCall("138xxxxxxxx", err => {
  2. console.log(`makeCall callback: err->${JSON.stringify(err)}`);
  3. });

call.makeCall7+

makeCall(phoneNumber: string): Promise<void>

跳轉(zhuǎn)到撥號界面,并顯示待撥出的號碼。使用Promise異步回調(diào)。

系統(tǒng)能力:SystemCapability.Applications.Contacts

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

返回值:

類型

說明

Promise<void>

以Promise形式異步返回撥號的結(jié)果。

錯誤碼:

以下錯誤碼的詳細介紹請參見ohos.telephony(電話子系統(tǒng))錯誤碼錯誤碼。

錯誤碼ID

錯誤信息

401

Parameter error.

8300001

Invalid parameter value.

8300002

Operation failed. Cannot connect to service.

8300003

System internal error.

8300999

Unknown error code.

示例:

  1. let promise = call.makeCall("138xxxxxxxx");
  2. promise.then(() => {
  3. console.log(`makeCall success`);
  4. }).catch(err => {
  5. console.error(`makeCall fail, promise: err->${JSON.stringify(err)}`);
  6. });

call.hasCall

hasCall(callback: AsyncCallback<boolean>): void

判斷是否存在通話。使用callback異步回調(diào)。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<boolean>

回調(diào)函數(shù)。返回true表示當前存在通話,false表示當前不存在通話。

示例:

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

call.hasCall

hasCall(): Promise<boolean>

判斷是否存在通話。使用Promise異步回調(diào)。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

返回值:

類型

說明

Promise<boolean>

以Promise形式異步返回判斷是否存在通話。

示例:

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

call.getCallState

getCallState(callback: AsyncCallback<CallState>): void

獲取當前通話狀態(tài)。使用callback異步回調(diào)。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<CallState>

回調(diào)函數(shù),異步返回獲取到的通話狀態(tài)。

示例:

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

call.getCallState

getCallState(): Promise<CallState>

獲取當前通話狀態(tài)。使用Promise異步回調(diào)。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

返回值:

類型

說明

Promise<CallState>

以Promise形式異步返回獲取到的通話狀態(tài)。

示例:

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

call.hasVoiceCapability7+

hasVoiceCapability(): boolean

檢查當前設(shè)備是否具備語音通話能力。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

返回值:

類型

說明

boolean

返回true表示設(shè)備具備語音通話能力,返回false表示設(shè)備不具備語音通話能力。

  1. let result = call.hasVoiceCapability();
  2. console.log(`hasVoiceCapability: ${JSON.stringify(result)}`);

call.isEmergencyPhoneNumber7+

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

判斷是否是緊急電話號碼。使用callback異步回調(diào)。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

callback

AsyncCallback<boolean>

回調(diào)函數(shù)。返回true表示是緊急電話號碼,返回false表示不是緊急電話號碼。

錯誤碼:

以下錯誤碼的詳細介紹請參見ohos.telephony(電話子系統(tǒng))錯誤碼錯誤碼。

錯誤碼ID

錯誤信息

401

Parameter error.

8300001

Invalid parameter value.

8300002

Operation failed. Cannot connect to service.

8300003

System internal error.

8300999

Unknown error code.

示例:

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

call.isEmergencyPhoneNumber7+

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

根據(jù)電話號碼參數(shù),判斷是否是緊急電話號碼。使用callback異步回調(diào)。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

options

EmergencyNumberOptions

電話號碼參數(shù)。

callback

AsyncCallback<boolean>

回調(diào)函數(shù)。返回true表示是緊急電話號碼,返回false表示不是緊急電話號碼。

錯誤碼:

以下錯誤碼的詳細介紹請參見ohos.telephony(電話子系統(tǒng))錯誤碼錯誤碼。

錯誤碼ID

錯誤信息

401

Parameter error.

8300001

Invalid parameter value.

8300002

Operation failed. Cannot connect to service.

8300003

System internal error.

8300999

Unknown error code.

示例:

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

call.isEmergencyPhoneNumber7+

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

根據(jù)電話號碼參數(shù),判斷是否是緊急電話號碼。使用Promise異步回調(diào)。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

options

EmergencyNumberOptions

電話號碼參數(shù)。

返回值:

類型

說明

Promise<boolean>

以Promise形式異步返回判斷是否是緊急電話號碼的結(jié)果。

錯誤碼:

以下錯誤碼的詳細介紹請參見ohos.telephony(電話子系統(tǒng))錯誤碼錯誤碼。

錯誤碼ID

錯誤信息

401

Parameter error.

8300001

Invalid parameter value.

8300002

Operation failed. Cannot connect to service.

8300003

System internal error.

8300999

Unknown error code.

示例:

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

call.formatPhoneNumber7+

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

格式化電話號碼。使用callback異步回調(diào)。

電話號碼格式化后為標準數(shù)字字串,例如:“138 xxxx xxxx”、“0755 xxxx xxxx”。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

callback

AsyncCallback<string>

回調(diào)函數(shù),返回格式化電話號碼的結(jié)果。

錯誤碼:

以下錯誤碼的詳細介紹請參見ohos.telephony(電話子系統(tǒng))錯誤碼錯誤碼。

錯誤碼ID

錯誤信息

401

Parameter error.

8300001

Invalid parameter value.

8300002

Operation failed. Cannot connect to service.

8300003

System internal error.

8300999

Unknown error code.

示例:

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

call.formatPhoneNumber7+

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

格式化電話號碼,可設(shè)置格式化參數(shù)。使用callback異步回調(diào)。

電話號碼格式化后為標準數(shù)字字串,例如:“138 xxxx xxxx”、“0755 xxxx xxxx”。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

options

NumberFormatOptions

格式化參數(shù),如國家碼。

callback

AsyncCallback<string>

回調(diào)函數(shù),返回格式化電話號碼的結(jié)果。

錯誤碼:

以下錯誤碼的詳細介紹請參見ohos.telephony(電話子系統(tǒng))錯誤碼錯誤碼。

錯誤碼ID

錯誤信息

401

Parameter error.

8300001

Invalid parameter value.

8300002

Operation failed. Cannot connect to service.

8300003

System internal error.

8300999

Unknown error code.

示例:

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

call.formatPhoneNumber7+

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

格式化電話號碼,可設(shè)置格式化參數(shù)。使用Promise異步回調(diào)。

電話號碼格式化后為標準數(shù)字字串,例如:“138 xxxx xxxx”、“0755 xxxx xxxx”。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

options

NumberFormatOptions

格式化參數(shù),如國家碼。

返回值:

類型

說明

Promise<string>

以Promise形式異步返回格式化電話號碼的結(jié)果。

錯誤碼:

以下錯誤碼的詳細介紹請參見ohos.telephony(電話子系統(tǒng))錯誤碼錯誤碼。

錯誤碼ID

錯誤信息

401

Parameter error.

8300001

Invalid parameter value.

8300002

Operation failed. Cannot connect to service.

8300003

System internal error.

8300999

Unknown error code.

示例:

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

call.formatPhoneNumberToE1647+

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

將電話號碼格式化為E.164表示形式。使用callback異步回調(diào)。

待格式化的電話號碼需要與傳入的國家碼相匹配,如中國電話號碼需要傳入國家碼CN,否則格式化后的電話號碼為null。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

countryCode

string

國家碼,支持所有國家碼,如:中國(CN)。

callback

AsyncCallback<string>

回調(diào)函數(shù),返回將電話號碼格式化為E.164表示形式的結(jié)果。

錯誤碼:

以下錯誤碼的詳細介紹請參見ohos.telephony(電話子系統(tǒng))錯誤碼錯誤碼。

錯誤碼ID

錯誤信息

401

Parameter error.

8300001

Invalid parameter value.

8300002

Operation failed. Cannot connect to service.

8300003

System internal error.

8300999

Unknown error code.

示例:

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

call.formatPhoneNumberToE1647+

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

將電話號碼格式化為E.164表示形式。使用Promise異步回調(diào)。

待格式化的電話號碼需要與傳入的國家碼相匹配,如中國電話號碼需要傳入國家碼CN,否則格式化后的電話號碼為null。

支持所有國家碼。

系統(tǒng)能力:SystemCapability.Telephony.CallManager

參數(shù):

參數(shù)名

類型

必填

說明

phoneNumber

string

電話號碼。

countryCode

string

國家碼,支持所有國家碼,如:中國(CN)。

返回值:

類型

說明

Promise<string>

以Promise形式異步返回將電話號碼格式化為E.164表示形式的結(jié)果。

錯誤碼:

以下錯誤碼的詳細介紹請參見ohos.telephony(電話子系統(tǒng))錯誤碼錯誤碼。

錯誤碼ID

錯誤信息

401

Parameter error.

8300001

Invalid parameter value.

8300002

Operation failed. Cannot connect to service.

8300003

System internal error.

8300999

Unknown error code.

示例:

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

DialOptions

撥打電話的可選參數(shù)。

系統(tǒng)能力:以下各項對應的系統(tǒng)能力均為SystemCapability.Telephony.CallManager。

名稱

類型

必填

說明

extras

boolean

根據(jù)extras的值判斷是否為視頻通話,默認為語音通話。

- true:視頻通話。

- false:語音通話。

CallState

通話狀態(tài)碼。

系統(tǒng)能力:以下各項對應的系統(tǒng)能力均為SystemCapability.Telephony.CallManager。

名稱

說明

CALL_STATE_UNKNOWN

-1

無效狀態(tài),當獲取呼叫狀態(tài)失敗時返回。

CALL_STATE_IDLE

0

表示沒有正在進行的呼叫。

CALL_STATE_RINGING

1

表示來電正在振鈴或等待。

CALL_STATE_OFFHOOK

2

表示至少有一個呼叫處于撥號、通話中或呼叫保持狀態(tài),并且沒有新的來電振鈴或等待。

EmergencyNumberOptions7+

判斷是否是緊急電話號碼的可選參數(shù)。

系統(tǒng)能力:以下各項對應的系統(tǒng)能力均為SystemCapability.Telephony.CallManager。

名稱

類型

必填

說明

slotId

number

卡槽ID:

- 卡槽1:0。

- 卡槽2:1。

NumberFormatOptions7+

格式化號碼的可選參數(shù)。

系統(tǒng)能力:以下各項對應的系統(tǒng)能力均為SystemCapability.Telephony.CallManager。

名稱

類型

必填

說明

countryCode

string

國家碼,支持所有國家的國家碼,如:CN(中國)。默認為:CN。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號