網站首頁 編程語言 正文
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
* @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)
}
}
原文鏈接:https://jianguo.blog.csdn.net/article/details/126340053
相關推薦
- 2022-07-07 Python自動化測試selenium指定截圖文件名方法_python
- 2022-04-28 一篇文章帶你了解C++特殊類的設計_C 語言
- 2022-12-22 利用C++求解八數碼問題實例代碼_C 語言
- 2022-11-03 C#如何給新建的winform程序添加資源文件夾Resources_C#教程
- 2022-10-24 Python?NumPy教程之索引詳解_python
- 2023-04-03 iOS數據持久化KeyChain數據操作詳解_IOS
- 2024-03-20 解決(gyp、python等問題):gyp ERR! find VS msvs_version no
- 2022-08-23 一文教會你調整Matplotlib子圖的大小_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支