在DAYU200上實(shí)現(xiàn)OpenHarmony跳轉(zhuǎn)撥號(hào)界面

一、簡(jiǎn)介

日常生活中,打電話是最常見的交流方式之一,那么如何在OpenAtom OpenHarmony(簡(jiǎn)稱“OpenHarmony”)中進(jìn)行電話服務(wù)相關(guān)的開發(fā)呢?今天我們可以一起來了解一下如何通過電話服務(wù)系統(tǒng)支持的API實(shí)現(xiàn)撥打電話的功能。

二、效果展示

應(yīng)用可以通過調(diào)用call和observer模塊的API來獲取當(dāng)前注冊(cè)網(wǎng)絡(luò)名稱、網(wǎng)絡(luò)服務(wù)狀態(tài)、信號(hào)強(qiáng)度以及SIM卡的相關(guān)信息,具體可參考獲取當(dāng)前蜂窩網(wǎng)絡(luò)信號(hào)信息開發(fā)指導(dǎo)。

直接撥打電話需要提供系統(tǒng)權(quán)限ohos.permission.PLACE_CALL,在這里建議應(yīng)用使用makeCall(),跳轉(zhuǎn)到撥號(hào)界面,并顯示撥號(hào)的號(hào)碼,當(dāng)開發(fā)者調(diào)用makeCall接口時(shí),設(shè)備會(huì)自動(dòng)跳轉(zhuǎn)到撥號(hào)界面。

三、接口說明

call模塊為開發(fā)者提供呼叫管理功能。observer模塊為開發(fā)者提供通話業(yè)務(wù)狀態(tài)訂閱和取消訂閱功能。

call.hasVoiceCapability():能力獲取,表示是否具有語音功能。

call.makeCall()跳轉(zhuǎn)撥號(hào)界面,跳轉(zhuǎn)到撥號(hào)界面,并顯示撥號(hào)的號(hào)碼。

observer.on(‘callStateChange’):訂閱通話業(yè)務(wù)狀態(tài)變化,

ohos.permission.READ_CALL_LOG (獲取通話號(hào)碼需要該權(quán)限)。

observer.off(‘callStateChange’):取消訂閱通話業(yè)務(wù)狀態(tài)變化。

四、開發(fā)步驟

1.import需要的模塊。

// import需要的模塊
import call from '@ohos.telephony.call';
import observer from '@ohos.telephony.observer';

2.調(diào)用hasVoiceCapability()接口獲取當(dāng)前設(shè)備呼叫能力,如果支持繼續(xù)下一步;如果不支持則無法發(fā)起呼叫。

// 調(diào)用查詢能力接口
let isSupport = call.hasVoiceCapability();
if (!isSupport) {
    console.log("not support voice capability, return.");
    return;
}

3.跳轉(zhuǎn)到撥號(hào)界面,并顯示撥號(hào)的號(hào)碼。

// 如果設(shè)備支持呼叫能力,則繼續(xù)跳轉(zhuǎn)到撥號(hào)界面,并顯示撥號(hào)的號(hào)碼
call.makeCall("13xxxx", (err)=> {
    if (!err) {
        console.log("make call success.");
    } else {
        console.log("make call fail, err is:" + JSON.stringify(err));
    }
});

4.訂閱通話業(yè)務(wù)狀態(tài)變化。(可選)

// 訂閱通話業(yè)務(wù)狀態(tài)變化(可選)
observer.on("callStateChange", (data) => {
    console.log("call state change, data is:" + JSON.stringify(data));
});

5.取消訂閱通話業(yè)務(wù)狀態(tài)變化。(可選)

// 取消訂閱通話業(yè)務(wù)狀態(tài)變化
observer.off("callStateChange", (data) => {
    console.log("call state change, data is:" + JSON.stringify(data));
});

五、完整代碼

// import需要的模塊
import call from '@ohos.telephony.call';
import observer from '@ohos.telephony.observer';
@Entry
@Component
struct CAllTest{
  build(){
 
    Column(){
 
      Button("打電話給堅(jiān)果").width(300).height(80) .fontSize(30).fontColor(Color.Orange).onClick(()=>{
        // 調(diào)用查詢能力接口
        let isSupport = call.hasVoiceCapability();
        if (!isSupport) {
          console.info(" support voice capability, return");
          return;
        }
        // 如果設(shè)備支持呼叫能力,則繼續(xù)跳轉(zhuǎn)到撥號(hào)界面,并顯示撥號(hào)的號(hào)碼
        call.makeCall("17752170152", (err)=> {
          if (!err) {
            console.info(" make call success.");
 
          } else {
            console.info("make call fail, err is:" + JSON.stringify(err));
          }
        });
 
 
      })
 
    }.width("100%").height("100%").justifyContent(FlexAlign.Center)
 
 
  }
}

六、總結(jié)

本文通過一個(gè)按鈕,實(shí)現(xiàn)了跳轉(zhuǎn)撥號(hào)的功能。首先為按鈕添加點(diǎn)擊事件,其次導(dǎo)入需要的模塊,調(diào)用hasVoiceCapability()接口獲取當(dāng)前設(shè)備呼叫能力,最終實(shí)現(xiàn)一鍵跳轉(zhuǎn)到撥號(hào)界面。大家可以將這個(gè)功能擴(kuò)展到自己的應(yīng)用里。

寫在最后

  • 如果你覺得這篇內(nèi)容對(duì)你還蠻有幫助,我想邀請(qǐng)你幫我三個(gè)小忙:
  • 點(diǎn)贊,轉(zhuǎn)發(fā),有你們的 『點(diǎn)贊和評(píng)論』,才是我創(chuàng)造的動(dòng)力。
  • 關(guān)注小編,同時(shí)可以期待后續(xù)文章ing??,不定期分享原創(chuàng)知識(shí)。
  • 想要獲取更多完整鴻蒙最新學(xué)習(xí)知識(shí)點(diǎn),請(qǐng)移步前往小編:https://gitee.com/MNxiaona/733GH/blob/master/jianshu
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容