Android彩信发送底层剖析:构建与传输过程详解
4星 · 超过85%的资源 需积分: 17 60 浏览量
更新于2024-09-17
收藏 84KB DOC 举报
本文将详细介绍Android平台上的彩信发送过程,重点剖析2.1版本中的关键代码段。在Android彩信发送流程中,用户按下发送按钮后,系统会通过`com.Android.mms.data.WorkingMessage.Java`类中的`send()`函数来实现。这个函数的主要任务是将图片、数据和文件等非文本内容适配到彩信格式,并通过网络发送。
首先,当用户触发发送操作时,`send()`函数会被调用。它会先进行日志记录(如果开启了verbose模式),这有助于开发者追踪和调试。然后,该方法进入实际的发送准备阶段,通过`prepareForSave(true/*notify*/)`调用,将彩信内容写入本地存储,并通知相关的状态变化。
在继续之前,系统需要获取接收者的列表,因为彩信通常涉及到多个联系人。接着,检查消息内容是否需要发送MMS(多媒体信息服务)而非短信。如果是MMS,程序会创建本地副本,因为发送操作将在后台线程执行,以避免阻塞主线程的其他操作。
关键代码部分提到的`finalUrimmsUri=mMessageUri;`表示会为彩信创建一个URI,用于标识存储的多媒体数据。而`finalPduPersister persister = PduPersister.getPduPersister(mContext)`这一行则是获取一个PDU(Protocol Data Unit)持久化对象,用于管理和存储彩信的二进制数据,包括图片、音频或视频等非文本内容。
在打包过程中,PduPersister会根据MMS协议的要求对这些数据进行编码和压缩,将其转换成适合通过移动网络传输的格式。这通常涉及到封装成PDU格式,一种基于七号信令系统的数据包格式,支持多媒体信息的传输。
最后,`send()`函数会将所有必要的信息和数据组合成一个完整的彩信请求,并调用`onMessageSent()`回调,通知用户消息已经成功发送到手机堆栈。至此,彩信的发送过程完成,但`WorkingMessage`对象在此刻已不再使用。
总结来说,Android彩信发送涉及了后台线程的异步操作,对内容进行本地备份和编码处理,以及与手机通信系统的交互。通过理解`send()`函数及其相关的代码,开发者可以深入理解彩信如何在Android设备上被创建、存储和最终通过网络发送给收件人。
147 浏览量
2011-06-06 上传
769 浏览量
2013-04-24 上传
2019-04-19 上传
2015-01-21 上传
2013-01-28 上传
8023天使
- 粉丝: 0
- 资源: 10
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍