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

200 篇文章 0 订阅
200 篇文章 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

        })

    }

  }

}

写在最后

●如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
●点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
●关注小编,同时可以期待后续文章ing ,不定期分享原创知识。
●想要获取更多完整鸿蒙最新学习知识点,请前往小编的私藏学习笔记汇总篇:https://gitee.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值