[文章]鸿蒙实战应用开发:【拨打电话】功能

阅读量0
推荐
0
0

概述

本示例通过输入电话,进行电话拨打,及电话相关信息的显示。

样例展示

image.png

涉及OpenHarmony威廉希尔官方网站 特性

网络通信

基础信息

image.png

拨打电话

介绍

本示例使用call相关接口实现了拨打电话并显示电话相关信息的功能

效果预览

image.png

使用说明

1.输入电话号码后,点击电话按钮,进行拨打电话。

2.拨打电话后文本框会显示拨打是否成功,是否存在通话,通话状态,是否紧急号码,格式化后的电话号码。

工程目录

entry/src/main/ets/
|---common
|   |---CallView.ets                   // 电话API
|---entryability
|   |---EntryAbility.ts
|---model
|   |---Logger.ts                      // 日志工具
|---pages
|   |---Index.ets                      // 首页

具体实现

  • 该示例展示拨打电话功能,dial方法拨打电话,可设置通话参数,hasCall方法判断是否存在通话,getCallState方法获取当前通话状态,isEmergencyPhoneNumber方法判断是否是紧急电话号码,formatPhoneNumber方法格式化电话号码,formatPhoneNumberToE164方法将电话号码格式化为E.164表示形式。

源码链接:[CallView.ets]

/*

 * Copyright (c) 2022-2023 Huawei Device Co., Ltd.

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */



import Logger from '../model/Logger'

import call from '@ohos.telephony.call'



const TAG: string = `[CallView]`



@Component

export struct CallView {

  private on: Resource = $r('app.media.call_on')

  private off: Resource = $r('app.media.call_off')

  @State src: Resource = this.off

  @Link input: string

  @Link output: string



  build() {

    Column() {

      Image(this.src)

        .id('callImg')

        .width(70)

        .height(70)

        .onClick(() => {

          if (this.src == this.on) {

            this.src = this.off

          } else {

            this.output = ''

            this.src = this.on

            call.dialCall(this.input, (err, data) => {

              this.output = this.output + `dial: ${JSON.stringify(data)}` + '\\n'

              Logger.info(`${TAG}, callback: dial err->${JSON.stringify(err)} data->${JSON.stringify(data)}`)

            })



            call.hasCall((err, data) => {

              this.output = this.output + `hasCall: ${JSON.stringify(data)}` + '\\n'

              Logger.info(`${TAG}, callback: hasCall err->${JSON.stringify(err)} data->${JSON.stringify(data)}`)

            })



            call.getCallState((err, data) => {

              this.output = this.output + `getCallState: ${JSON.stringify(data)}` + '\\n'

              Logger.info(`${TAG}, callback: getCallState err->${JSON.stringify(err)} data->${JSON.stringify(data)}`)

            })



            call.isEmergencyPhoneNumber(this.input, (err, data) => {

              this.output = this.output + `isEmergencyPhoneNumber: ${JSON.stringify(data)}` + '\\n'

              Logger.info(`${TAG}, callback: isEmergencyPhoneNumber err->${JSON.stringify(err)} data->${JSON.stringify(data)}`)

            })



            call.formatPhoneNumber(this.input, (err, data) => {

              this.output = this.output + `formatPhoneNumber: ${JSON.stringify(data)}` + '\\n'

              Logger.info(`${TAG}, callback: formatPhoneNumber err->${JSON.stringify(err)} data->${JSON.stringify(data)}`)

            })



            call.formatPhoneNumberToE164(this.input, "CN", (err, data) => {

              this.output = this.output + `formatPhoneNumberToE164: ${JSON.stringify(data)}` + '\\n'

              Logger.info(`${TAG}, callback: formatPhoneNumberToE164 err->${JSON.stringify(err)} data->${JSON.stringify(data)}`)

            })

          }

        })

        .onFinish(() => {

          this.src = this.off

        })

    }

  }

}

鸿蒙OpenHarmony知识待更新?点

9c7ba8368ccabe1724a204de31a93834.jpeg

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友