【鸿蒙实战开发】HarmonyOS实战项目-短信服务

概述

本示例展示了电话服务中发送短信的功能。

样例展示

在这里插入图片描述

涉及OpenHarmony技术特性

网络通信

难度级别

中级

基础信息

在这里插入图片描述

使用@ohos.telephony.sms接口展示了电话服务中发送短信的功能。

效果预览

使用说明:

1.首页点击创建联系人,弹框输入联系人姓名和电话,点击确定按钮后,联系人列表中添加该联系人;
2.点击管理,该按钮变成取消,联系人列表出现删除x按钮,点击x按钮可删除联系人,点击取消,按钮变成管理;
3.联系人列表中每个联系人右侧有发送短信图标按钮,点击该图标按钮跳转到发送短信页面;
4.发送短信页面,输入短信点击向上箭头的发送按钮,可以发送短信;
5.需授予短信发送权限且插入SIM卡才可成功发送短信,有预置短信内容,每次退出应用数据会清空,未添加存储功能,发送短信为默认卡发送。

工程目录

entry/src/main/ets/
|---pages
|   |---Index.ets                           // 首页
|   |---SendMessage.ets                     / 发送短信页
|---common
|   |---AddDialog.ets                       // 添加联系人
|   |---TitleBar.ets                        // title
|---model
|   |---Contact.ets                         // 联系人数据结构
|   |---DataSources.ets                     // 懒加载数据
|   |---DataTimeUtil.ets                    // 日期工具
|   |---Logger.ts                           // 日志工具
|   |---Message.ets                         // 短信数据结构
|   |---PermissionUtils.ets                 // 权限信息
|   |---SmsModel.ets                        // 封装短信类

具体实现

发送短信功能在SmsModel中 :

/*

 * Copyright (c) 2022 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 sms from '@ohos.telephony.sms'

import Logger from '../model/Logger'



const TAG: string = `[SmsModel]`



export default class SmsModel {

  async createMessage() {

    const specification = '3gpp'

    const pdu = [0x08, 0x91] // 以数组的形式显示协议数据单元(PDU),类型为number

    const shortMessage = await sms.createMessage(pdu, specification)

    Logger.info(`${TAG}, createMessageCallback: shortMessage = ${JSON.stringify(shortMessage)}`)

    return shortMessage

  }



  sendMessage(slotId, content, destinationHost, serviceCenter, destinationPort, handleSend, handleDelivery) {

    Logger.info(`${TAG}, sendMessage start ${slotId} ${content} ${destinationHost} ${serviceCenter} ${destinationPort}`)

    const options =

      {

        slotId: slotId,

        content: content,

        destinationHost: destinationHost,

        serviceCenter: serviceCenter,

        destinationPort: destinationPort,

        sendCallback(err, data) {

          Logger.info(`${TAG}, sendCallback: data = ${JSON.stringify(data)} err = ${JSON.stringify(err)}`)

          handleSend(err, data)

        },

        deliveryCallback(err, data) {

          Logger.info(`${TAG}, deliveryCallback: data = ${JSON.stringify(data)} err = ${JSON.stringify(err)}`)

          handleDelivery(err, data)

        }

      }



    sms.sendMessage(options)

    Logger.info(`${TAG}, sendMessage end`)

  }



  async getDefaultSmsSlotId() {

    const defaultSmsSlotId = await sms.getDefaultSmsSlotId()

    Logger.info(`${TAG}, getDefaultSmsSlotId: defaultSmsSlotId = ${defaultSmsSlotId}`)

    return defaultSmsSlotId

  }



  async setSmscAddr(slotId, smscAddr) {

    const serviceCenter = await sms.setSmscAddr(slotId, smscAddr)

    Logger.info(`${TAG}, setSmscAddr: serviceCenter = ${JSON.stringify(serviceCenter)}`)

    return serviceCenter

  }



  async getSmscAddr(slotId) {

    const serviceCenter = await sms.getSmscAddr(slotId)

    Logger.info(`${TAG}, getSmscAddr: serviceCenter = ${JSON.stringify(serviceCenter)}`)

    return serviceCenter

  }

}

发送短信:发送短信首先需要使用createMessage方法创建短信实例,然后获取基本参数,getDefaultSmsSlotId可以获取发短信默认卡槽id,getSmscAddr获取短信发送地址,然后调用sms.sendMessage方法发送短信。

依赖

不涉及。

约束与限制

1.本示例仅支持在标准系统上运行;
2.本示例需要插入SIM卡,目前该功能仅支持部分机型;
3.本示例已适配API version 9版本SDK,版本号:3.2.11.9;
4.本示例涉及使用系统接口:getSmscAddr(),需要手动替换Full SDK 才能编译通过
5.本示例需要使用DevEco Studio 3.1 Beta2 (Build Version: 3.1.0.400, built on April 7, 2023)及以上版本才可编译运行;
6.本示例所配置的权限ohos.permission.SEND_MESSAGES、ohos.permission.SET_TELEPHONY_STATE、ohos.permission.GET_TELEPHONY_STATE为system_basic级别(相关权限级别可通过[权限定义列表] 查看),需要手动配置对应级别的权限签名(具体操作可查看自动化签名方案;
7.本示例为预置应用,无需用户授权弹窗,授权方式为预置授权。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/BasicFeature/Telephony/Message/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
gitpull origin master

写在最后

有很多小伙伴不知道该从哪里开始学习鸿蒙开发技术?也不知道鸿蒙开发的知识点重点掌握的又有哪些?自学时频繁踩坑,导致浪费大量时间。结果还是一知半解。所以有一份实用的鸿蒙(HarmonyOS NEXT)全栈开发资料用来跟着学习是非常有必要的。

获取完整版高清学习资料,请点击→鸿蒙全栈开发学习资料(安全链接,请放心点击)

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了

最新鸿蒙全栈开发学习线路在这里插入图片描述

鸿蒙HarmonyOS开发教学视频

在这里插入图片描述

大厂面试真题

在这里插入图片描述

在这里插入图片描述

鸿蒙OpenHarmony源码剖析

在这里插入图片描述

这份资料能帮住各位小伙伴理清自己的学习思路,更加快捷有效的掌握鸿蒙开发的各种知识。有需要的小伙伴自行领取,,先到先得~无套路领取!!

获取这份完整版高清学习资料,请点击→鸿蒙全栈开发学习资料(安全链接,请放心点击)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值