OpenHarmony电话服务开发

电话服务系统提供了一系列的API用于拨打电话、获取无线蜂窝网络和SIM卡相关信息。

应用可以通过调用API来获取当前注册网络名称、网络服务状态、信号强度以及SIM卡的相关信息,具体可参考获取当前蜂窝网络信号信息开发指导。

直接拨打电话需要系统权限ohos.permission.PLACE_CALL,建议应用使用makeCall(),跳转到拨号界面,并显示拨号的号码,具体可查看下面的演示。

OpenHarmony跳转拨号界面

当应用需要跳转到拨号界面,并显示拨号的号码时,大家就可以来看这篇文章,当开发者调用makeCall接口时,设备会自动跳转到拨号界面。和正常拨打电话一样,用户可以选择卡1或卡2拨出。

先来看一下实现的效果。

接口说明

call模块为开发者提供呼叫管理功能。observer模块为开发者提供通话业务状态订阅和取消订阅功能。

  • call.hasVoiceCapability():能力获取,表示是否具有语音功能。
  • call.makeCall()跳转拨号界面,跳转到拨号界面,并显示拨号的号码。
  • observer.on(‘callStateChange’):订阅通话业务状态变化,ohos.permission.READ_CALL_LOG (获取通话号码需要该权限)
  • observer.off(‘callStateChange’):取消订阅通话业务状态变化.

开发步骤

1.import需要的模块。

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

2.调用hasVoiceCapability()接口获取当前设备呼叫能力,如果支持继续下一步;如果不支持则无法发起呼叫。

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

3.跳转到拨号界面,并显示拨号的号码。

// 如果设备支持呼叫能力,则继续跳转到拨号界面,并显示拨号的号码
call.makeCall("13xxxx", (err)=> {if (!err) {console.log("make call success.");} else {console.log("make call fail, err is:" + JSON.stringify(err));}
});

4.(可选)订阅通话业务状态变化。

// 订阅通话业务状态变化(可选)
observer.on("callStateChange", (data) => {console.log("call state change, data is:" + JSON.stringify(data));
});

5.取消订阅通话业务状态变。

// 取消订阅通话业务状态变
observer.off("callStateChange", (data) => {console.log("call state change, data is:" + JSON.stringify(data));
});

完毕

最后附上完整代码:

/** Copyright (c) 2022 JianGuo 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.*/
/**     * @ProjectName : nutsStudy* @FileName :  call* @Author : 坚果* @Time : 2022/8/15 08:20* @Description : 文件描述 */
// import需要的模块
import call from '@ohos.telephony.call';
import observer from '@ohos.telephony.observer';
@Entry
@Component
struct CAllTest{build(){Column(){Button("打电话").width(200).height(80) .fontSize(30).fontColor(Color.Orange).onClick(()=>{// 调用查询能力接口let isSupport = call.hasVoiceCapability();if (!isSupport) {console.info(" support voice capability, return");return;}// 如果设备支持呼叫能力,则继续跳转到拨号界面,并显示拨号的号码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)}
}

感谢大家的支持。

OpenHarmony如何拨打电话相关推荐

  1. Flutter 拨打电话和跳转网页

    首先需要一如库 url_launcher  如下 具体写法如下 import 'package:flutter/material.dart'; import 'package:url_launcher ...

  2. swift3.0最新拨打电话方法

    let alertVC : UIAlertController = UIAlertController.init(title: "是否拨打报警电话:10086", message: ...

  3. 用Python拨打电话

    用python拨打电话,先看小视频 Python自动化技术广泛应用于测试.运维相关领域,我自己现在也是做的这方面,工资也不比其他方向少,就业相对容易的多,而且需求的公司也多,对后端框架之类也要求不是很 ...

  4. java 打电话_第四十二篇----拨打电话

    界面: MainActivity.java packagecom.example.aimee.phone;importandroid.Manifest;importandroid.content.In ...

  5. 微信小程序 --- 拨打电话

    拨打电话:wx.makePhoneCall btnclick:function(){wx.makePhoneCall({phoneNumber:'12580'}); } 转载于:https://www ...

  6. 脚本控制向Android模拟拨打电话,发送短信,定位设置功能

    做行为触发的时候要向模拟器实现拨打电话,发送短信,定位设置的的功能,可以很方便通过telnet localhost  5554实现. 写个脚本很快的搞定了.网上资料很多,脚本的很少,也所积点德啦. 写 ...

  7. python实现自动打电话软件_用Python拨打电话

    用python拨打电话,先看小视频 跟selenium操作浏览器原理类似,这是用appium操作移动设备的一个自动化功能,自娱自乐,主要是通过小案例引出相关技术 一.环境配置: 1.安装 jdk 1. ...

  8. android跳转到打电话,Android 应用跳转到拨打电话界面或qq进行聊天(qq咨询)

    拨打电话: /** * 调用拨号界面 * @param phone 电话号码 */ public void callPhone(String phone) { Intent intent = new ...

  9. android 拨打电话 号码判断

    AndroidManifest中添加打电话权限 <uses-permission android:name="android.permission.CALL_PHONE"/& ...

最新文章

  1. 基于Kubernetes 的机器学习工作流
  2. Android使用ViewFlipper实现左右滑动效果面
  3. jvm 9种垃圾收集器
  4. VMware安装MikroTik RouterOS chr
  5. hdu 4925 Apple Tree--2014 Multi-University Training Contest 6
  6. kafka 怎么样连接图形化界面_从零开始搭建Kafka+SpringBoot分布式消息系统
  7. rmmod无法卸载驱动_AMD芯片组驱动更新:优化了RYZEN CPU供电调节
  8. HttpClientHelper的封装
  9. 从零开始学习python编程-和尧名大叔一起从0开始学Python编程-循环
  10. MySQL 运维及开发规范
  11. 柳夜熙又更新了,虚拟人的底层技术是什么?
  12. 自媒体怎么做?5个操作步骤,普通人也可以做
  13. 什么是具身认知?反身理论?
  14. 被高企的社会化网络精准营销
  15. 关于pfx证书和cer证书
  16. 【ESP 保姆级教程】疯狂毕设篇 —— 案例:基于物联网的GY906红外测温门禁刷卡系统
  17. FF300R08W2P2B11A 汽车用EasyPACK 模块 2 个独立式
  18. 【Python】Pandas读取tsv文件
  19. Laszlo 和 LZX 的 一些概念
  20. Confluence 7.2 宏乱码解决办法

热门文章

  1. 14、RH850 F1 RAM存储器介绍
  2. PHP+MYSQL 用户注册登录代码
  3. id 重启event_windows server 2008 R2服务器自动重启,事件ID:6008和事件ID:5
  4. 支持麦克风精准定位发言人聚焦并跟踪的会议摄像机特征
  5. Java:Java和C有什么区别?
  6. IntelliJ Idea入门教程:如何新建项目
  7. 如何完美快速地卸载office2007,2010,2013,2016
  8. mysql logs_MySQL Logs
  9. 在Vue中使用 createjs
  10. JSON转String