#DAYU200# OpenHarmony跳转拨号界面

news/2023/12/4 20:51:34

日常交流中,给朋友打电话是一个常见的交流方式,那么如何在OpenHarmony中进行电话服务相关的开发呢,今天我们可以一起来了解一下。

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

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

直接拨打电话需要系统权限ohos.permission.PLACE_CALL,建议应用使用makeCall(),跳转到拨号界面,并显示拨号的号码,当开发者调用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/9/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(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)
​
​}
}

好的,今天的一个小功能就带大家了解到这儿,大家也可以将这个功能扩展到自己的应用里。


http://www.ppmy.cn/news/894941.html

相关文章

ICCV图像处理相关论文总结(103篇)(粗)

ICCV图像处理相关论文总结(103篇) 1、Person ReID(行人再识别)(15) 1、Neural Person Search Machines Hao Liu, Jiashi Feng,Zequn Jie, Karlekar Jayashree, Bo Zhao, Meibin Qi, Jianguo Jiang, S…

unity Kinect 垃圾分类 体感互动

https://item.taobao.com/item.htm?spma2oq0.12575281.0.0.15d11debV1kIxe&ftt&id619995280132 最近自己制作了一个垃圾分类的体感互动项目和大家分享下点击观看视频获取项目源码 我用的是unity5.52 垃圾分类的类型 using System.Collections; using System.Collect…

[论文阅读]:PP-YOLO: An Effective and Efficient Implementation of Object Detector

题目:PP-YOLO: An Effective and Efficient Implementation of Object Detector 作者:Xiang Long, Kaipeng Deng, Guanzhong Wang, Yang Zhang, Qingqing Dang,Yuan Gao, Hui Shen, Jianguo Ren, Shumin Han, Errui Ding, Shilei Wen (百度团…

在Flutter中使用WillPopScope*

在Flutter中使用WillPopScope 作者:坚果 公众号:“大前端之旅” 华为云享专家,InfoQ签约作者,OpenHarmony布道师,,华为云享专家,阿里云专家博主,51CTO博客首席体验官,开源…

DevEco Studio配置:自定义头部代码注释

DevEco Studio配置:自定义头部代码注释 1.实现效果 /** 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…

OpenHarmony如何拨打电话

OpenHarmony电话服务开发 电话服务系统提供了一系列的API用于拨打电话、获取无线蜂窝网络和SIM卡相关信息。 应用可以通过调用API来获取当前注册网络名称、网络服务状态、信号强度以及SIM卡的相关信息,具体可参考获取当前蜂窝网络信号信息开发指导。 直接拨打电话…

#DAYU200#Ability入门

Ability入门 Ability在英文中是能力的意思,在这里是指应用所具备能力的抽象,同时是应用程序的重要组成部分。一个应用可以包含一个或多个FA/PA,其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面&#x…

Android hilt viewmodel冲突的坑

今天运行了一下程序,爆红,没有错误定位 ComponentProcessingStep was unable to process com.jianguo.jetpackproject.util.MyApplication_HiltComponents.SingletonC because dagger.hilt.android.internal.lifecycle.DefaultActivityViewModelFactory…

【RGSL】【第一部分】论文学习

论文及代码地址 题目:Regularized Graph Structure Learning with Semantic Knowledge for Multi-variates Time-Series Forecasting 翻译成中文应该是:基于语义知识的正则化图结构学习在多变量时间序列预测中的应用 作者:Hongyuan Yu123∗,…

送给你的 JS 日常开发小技巧

常听人说,“面试造火箭,入职拧螺丝”。 冒昧问一下,大佬们一般都拧几圈,一天能拧几个呀? 我这有一份螺丝刀日常保养小技巧,希望您能帮忙看下能帮我每天多拧几个螺丝吗? 1. 动态添加 Object 属性…

Go语言变量的定义

Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。 声明变量的一般形式是使用 var 关键字: var name type 其中,var 是声明变量的关键字,name 是变量名…

常用邮箱申请渠道

之前给大家提到过在注册小程序APPid时,需要用到邮箱,这里需要注意一下两点。 一个邮箱只能注册一个小程序 一个身份证可以注册5个,个人小程序 那么接下来就给大家列举一下,具体的邮箱都有那些。 1.谷歌邮箱 【gmail.om】 ps: 需…

ubuntu 20.04挂载机械硬盘及修改windows下ntfs格式读写权限的详细步骤

0.ubuntu 20.04 不使用uuid方法也能挂载硬盘其实 1.首先看自己机械硬盘的路径在哪 比如我的在下图所示的路径 sudo fdisk -l 也能这么看 2.因为window下分区的ntfs硬盘,linux没有修改权限,所以在使用之前先修复他 比如我的硬盘依次输入 sudo ntfsf…

ROS小车研究笔记4/1/2023:研究文章Detecting Glass in Simultaneous Localisation and Mapping

原文出处 article{Wang201797, title “Detecting glass in Simultaneous Localisation and Mapping”, journal “Robotics and Autonomous Systems”, volume “88”, pages “97 - 103”, year “2017”, issn “0921-8890”, doi “http://dx.doi.org/10.1016/j.rob…

【速度↑20%模型尺寸↓36%】极简开源人脸检测算法升级

经过一年的各种尝试、调试、测试以及无数次失败,我们的开源人脸检测算法再次升级。我们团队专注人脸检测优化十几年,一直持续优化,向着最简单的算法努力。 新版本提升: 计算量更小,速度提升约20%;模型尺寸精…

AAAI2021论文合集汇总!(持续更新)

论文标题论文地址论文作者Non-Autoregressive Coarse-to-Fine Video Captioninghttps://arxiv.org/abs/1911.12018Bang Yang, Yuexian Zou, Fenglin Liu, Can ZhangSTL-SGD: Speeding Up Local SGD with Stagewise Communication Periodhttps://arxiv.org/abs/2006.06377Shuhen…

什么是 CanvasKit ?

CanvasKit是以WASM为编译目标的Web平台图形绘制接口,其目标是将Skia的图形API导出到Web平台。从代码提交记录来看,CanvasKit作为了一个Module放置在整个代码仓库中,最早的一次提交记录在2018年9月左右,是一个比较新的codebase 本…

ArkTs中textinput输入特定值,跳转目标页面

ArkTs中textinput输入特定值,跳转目标页面 import router from @ohos.router import promptAction from @ohos.promptAction @Entry @Component struct TextInputPage {@State text: string = controller: TextInputController = new TextInputController()build()

初次使用repo 遇到的坑

特别申明:我只是知识的搬运工,记录遇到的坑,感谢原创作者,感谢分享! 问题1:Your identity is 解决:https://www.linuxidc.com/Linux/2014-03/97760p2.html 下载地址的URI更改为https://androi…

Mac 安装yarn

Mac 安装yarn 首先 npm install -g yarn 然后打开~/.zshrc open ~/.zshrc添加 export PATH$PATH:"/Users/jianguo/.npm-global/bin"刷新 source ~/.zshrc运行 yarn -v这几步就好了,谢谢大家
最新文章