当前位置: 首页 > news >正文

鸿蒙开发融云demo发送图片消息

鸿蒙开发融云demo发送图片消息

融云鸿蒙版是不带UI的,得自己一步步搭建。
这次讲如何发送图片消息,选择图片,显示图片消息。
还是有点难度的,好好看,好好学。

一、思路:

选择图片用:photoViewPicker.select

二、效果图:

在这里插入图片描述
在这里插入图片描述

三、关键代码:
/*** 选择图片* 注:官方说不用申请权限*/public static  openGallery(maxSelectNumber:number,callBack:(result:string[])=>void) {if(maxSelectNumber){const photoSelectOptions = new photoAccessHelper.PhotoSelectOptions();photoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; // 过滤选择媒体文件类型为IMAGEphotoSelectOptions.maxSelectNumber = maxSelectNumber; // 选择媒体文件的最大数目const photoViewPicker = new photoAccessHelper.PhotoViewPicker();photoViewPicker.select(photoSelectOptions).then((photoSelectResult: photoAccessHelper.PhotoSelectResult) => {if (photoSelectResult.photoUris.length > 0) {callBack(photoSelectResult.photoUris)}}).catch((err: BusinessError) => {console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);})}else {showToast('已选素材数量达到上限')}}
public static sendImageMessage(targetId: string, localPath: string,successCallBack?:()=>void) {let conId = new ConversationIdentifier();conId.conversationType = ConversationType.Private;conId.targetId = targetId;let imageMsg = new ImageMessage();imageMsg.localPath = localPath;let msgSrc = new Message(conId, imageMsg);let option: ISendMsgOption = {};let msgAfter: Message = msgSrcIMEngine.getInstance().sendMediaMessage(msgSrc, option, (msg: Message) => {// 消息保存到数据库msgAfter = msgmsgAfter.sentStatus = SentStatus.Sending// 这边会填消息EventKeys.postEvent(EventKeys.ReceivedImMessageEvents,ReceivedImMessageEvent(msgAfter))}, (msg: Message, progress: number) => {// 媒体上传进度 [1 ~ 100]}).then(result => {if (EngineError.Success !== result.code) {//发送消息失败msgAfter.sentStatus = SentStatus.FailedEventKeys.postEvent(EventKeys.ReceivedImMessageEvents,ReceivedImMessageEvent(msgAfter))return;}if (!result.data) {// 消息为空// 成功的状态,但是理论上不会出现发送消息成功,但是消息体为空的情况,暂时不处理,避免发送多次通知// msgAfter.sentStatus = SentStatus.Sent// emitter.emit(EventKeys.RECEIVED_IM_MESSAGE_EVENT, ReceivedImMessageEvent(msgAfter))return;}let msg = result.data as Message;EventKeys.postEvent(EventKeys.ReceivedImMessageEvents,ReceivedImMessageEvent(msg))// 刷新会话列表,不打算自己插入会话EventKeys.postEvent(EventKeys.RefreshMsgListEvents)successCallBack?.()})}
四、整个鸿蒙融云Demo源码结构图:

在这里插入图片描述有问题或者需要完整源码的私信我

http://www.lryc.cn/news/472421.html

相关文章:

  • 音视频入门基础:AAC专题(11)——AudioSpecificConfig简介
  • OpenCV基本操作(python开发)——(8)实现芯片瑕疵检测
  • 聚水潭商品信息集成到MySQL的高效解决方案
  • # centos6.5 使用 yum list 报错Error Cannot find a valid baseurl for repo bas 解决方法
  • 【专题】2023-2024中国保险数字化营销调研报告汇总PDF洞察(附原数据表)
  • ““ 引用类型应用举例
  • 数字图像处理 - 基于ubuntu20.04运行.NET6+OpenCVSharp项目
  • git cherry-pick用法详解
  • HCIP-HarmonyOS Application Developer V1.0 笔记(一)
  • 开发流程初学者指南——需求分析
  • CRM平台排名:用户体验与客户满意度的深度解析
  • WIFI、NBIOT、4G模块调试AT指令连接华为云物联网服务器(MQTT协议)
  • 打造自己的RAG解析大模型:(新技能)企业垂类数据标注(一)
  • 怎么理解ES6 Proxy
  • verilog实现一个5bit序列检测器
  • Redis数据安全_持久化机制
  • 什么是信息熵,什么是交叉熵,什么是KL散度?
  • 开发者的福音:PyTorch 2.5现已支持英特尔独立显卡训练
  • Deep InfoMax(DIM)(2019-02-ICLR)
  • 2024年10月中国数据库排行榜:TiDB续探花,GaussDB升四强
  • css边框修饰
  • 利用Python进行数据可视化:实用指南与推荐库
  • MobileNetv2网络详解
  • 惊了!大模型连这样的验证码都能读懂_java_识别验证码
  • 【小白学机器学习26】 极大似然估计,K2检验,logit逻辑回归(对数回归)(未完成----)
  • 【日常记录-Java】SLF4J扫描实现框架的过程
  • uni-app 获取 android 手机 IMEI码
  • 后台管理系统的通用权限解决方案(八)认证机制介绍、JWT介绍与jjwt框架的使用
  • 接口测试 —— Postman 变量了解一下!
  • 鸿蒙系统:核心特性、发展历程与面临的机遇与挑战