在DAYU200上实现OpenHarmony跳转拨号界面
一、简介
日常生活中,打电话是最常见的交流方式之一,那么如何在OpenAtom OpenHarmony(简称“OpenHarmony”)中进行电话服务相关的开发呢?今天我们可以一起来了解一下如何通过电话服务系统支持的API实现拨打电话的功能。
二、效果展示

应用可以通过调用call和observer模块的API来获取当前注册网络名称、网络服务状态、信号强度以及SIM卡的相关信息,具体可参考获取当前蜂窝网络信号信息开发指导。
直接拨打电话需要提供系统权限ohos.permission.PLACE_CALL,在这里建议应用使用makeCall(),跳转到拨号界面,并显示拨号的号码,当开发者调用makeCall接口时,设备会自动跳转到拨号界面。
三、接口说明
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));
});
五、完整代码
// import需要的模块
import call from '@ohos.telephony.call';
import observer from '@ohos.telephony.observer';
@Entry
@Component
struct CAllTest{
build(){ Column(){ Button("打电话给坚果").width(300).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) }
}
源码地址
https://gitee.com/jianguo888/callphone
六、总结
本文通过一个按钮,实现了跳转拨号的功能。首先为按钮添加点击事件,其次导入需要的模块,调用hasVoiceCapability()接口获取当前设备呼叫能力,最终实现一键跳转到拨号界面。大家可以将这个功能扩展到自己的应用里。比如,在一键呼叫,售后服务等场景。

在DAYU200上实现OpenHarmony跳转拨号界面的更多相关文章
- 安卓版微信内置浏览器,<a href="tel:电话号码"></a> 这个链接失效,不能跳到拨号界面?
https://segmentfault.com/q/1010000000318831 在URL最后面加“ #mp.weixin.qq.com ”,应该加其他qq.com的二级域名都行,估计是微信的安 ...
- vue点击跳转拨号界面
<a :href="'tel:' + VipInfo.HotelPhone" style="text-decoration:none;color:black;opa ...
- Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent ...
- Android开发中使用Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: Intent intent =new Intent(); intent. ...
- Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: Intent intent =new Intent(); intent. ...
- 从tabBarController的一个item上的控制器跳转到另一个item上的控制器
先从习惯性的tabBarController开始,很多应用的外框都是用这个开始的,而从tabBarController的一个item上的控制器跳转到另一个上的,往往都是直接通过点击tabBar上的不同 ...
- struts2--上传总结(限制大小和类型 非法上传的跳转)
网上有很多版本,鉴于实践出真知的态度 我自己探索了一番 struts版本:2.3.16 限制大小: struts2默认是2M 所以如果要扩大大小限制,应该先配一个全局struts2最大上限 <c ...
- 阿里云SLB上http强制跳转到https问题处理
背景: 最近一客户有一个需求,需要将外网所有http访问请求强制跳转到https,公网出口使用阿里云SLB,证书放在SLB上,SLB后端实例为ECS(webserver)web服务使用nginx, 网 ...
- CentOS Linux上搭建PPPoE服务器及拨号设置
CentOS Linux上搭建PPPoE服务器及拨号设置 搭建PPPoE,成功了的话,就觉得超级简单,在CentOS Linux更是5步左右就能搞定. 1.安装pppoe,安装完成后,会有pppoe- ...
- 从上一个页面跳入新页面时,如何拿URL中的参数
var url = document.URL; //获取当前页面的url var urlA = url.split('?');//以url中的问号进行分割; var goodscode = urlA[ ...
随机推荐
- django学习第九天---raw查询原生sql和python脚本中调用django环境和ORM锁和事务
ORM执行原生sql语句 在模型查询api不够用的情况下,我们还可以使用原始的sql语句进行查询 方式1 raw() raw()方法,返回模型的实例django.db.models.query.Raw ...
- Excel 求和函数结果一直为零
参考资料:Excel表格求和结果总是0怎么办 用SUMIFS函数求和,结果都是零 错误原因: 1.单元列数据格式设置错误,参考资料一 2.数据中含有空格或者回车键或者隐藏字符,参考资料二 解决方法: ...
- 第一百零九篇:基本数据类型(String类型)
好家伙, 本篇内容为<JS高级程序设计>第三章学习笔记 1.String类型 字符串类型是最常用的几个基本类型之一 字符串可以使用双引号,单引号以及反引号(键盘左Tab上面那个)标示 ...
- 一次生产环境OOM排查
一.背景 前几天下午飞书告警群里报起了java.lang.OutOfMemoryError: unable to create new native thread告警,看见后艾特了对应的项目负责人但是 ...
- 读 NebulaGraph源码 | 查询语句 LOOKUP 的一生
本文由社区用户 Milittle 供稿 LOOKUP 是图数据库 NebulaGraph 的一个查询语句.它依赖索引,可以查询点或者边的信息.在本文,我将着重从源码的角度解析一下 LOOKUP 语句的 ...
- Java 递归方法的使用 + 例子
1 /* 2 * 递归方法的使用 3 * 1.递归方法:一个方法体内调用它自身 4 * 2.方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制 5 * 递归一定要想已知方向 ...
- WPF之资源
目录 WPF对象资源的定义和查找 动态.静态使用资源 向程序添加二进制资源 字符串资源 非字符串资源 使用Pack URI路径访问二进制资源 WPF不但支持程序级的传统资源,同时还推出了独具特色的对象 ...
- 前后端分离之jQuery入门
jQuery入门 基本概念:jQuery是一个快速,小型且功能丰富的JavaScript库.借助易于使用的API(可在多种浏览器中使用),使HTML文档的遍历和操作,事件处理,动画和Ajax等事情变得 ...
- python基础十一(异常)
1.什么是异常异常是程序发生错误的信号,程序一旦出错就会抛出异常,程序的运行随即终止1)异常处理的三个特征异常的追踪信息异常的类型异常的内容2.为何处理异常为了增强程序的健壮性,即便是程序运行过程中出 ...
- QGIS中下载遥感影像的Python代码片段
1. 引言 QGIS是开源免费且好用的GIS软件,并且可以使用Python脚本来控制 这里主要使用的打开QGIS时启动内置的Python解释器,这个Python解释器可以访问iface接口从而实现对Q ...