Android 短信发送流程深度解析

0 下载量 24 浏览量 更新于2024-08-31 收藏 295KB PDF 举报
"Android Mms之:短信发送流程(图文详解) - 分析Android系统中短信和彩信的发送步骤,包括WorkingMessage、SmsMessageSender等关键组件的作用,以及短信与彩信的区别处理方式。" 在Android系统中,Mms( Multimedia Messaging Service,多媒体信息服务)应用程序用于发送和接收包含文本、图片、音频或视频等内容的多媒体消息。本文将深入探讨Android Mms的短信发送流程,解析这一过程的关键步骤和技术细节。 首先,当用户在Mms应用中创建并决定发送一条消息时,信息会被存储到数据库中。用户可以选择放弃、保存为草稿或者发送这条信息。如果选择发送,UI界面并不会立即显示变化,而是会监听发送过程中的回调信息和数据库变化,以便适时更新用户界面。 信息发送的第一步是WorkingMessage的介入。WorkingMessage会处理消息内容,例如验证和整理收件人列表,确保所有收件人地址有效,并将附件转换为SendReq格式,以适应彩信发送的需求。根据消息类型的不同(短信或彩信),WorkingMessage会采用不同的处理策略。 对于短信,经过初步处理后,WorkingMessage会实例化SmsMessageSender,并调用其`sendMessage()`方法。SmsMessageSender接收的参数包括收件人地址、信息内容和对话ID。在SmsMessageSender内部,信息会被按照收件人拆分成多条单独的短信,因为一条短信只能发送给一个收件人。在调用`sendMessage()`之前,WorkingMessage会向UI发送一次回调,更新收件人和信息文本框的状态。 短信发送的执行者是Frameworks层的SmsManager。SmsManager负责实际的短信发送工作,它会根据指定的收件人地址和内容,通过底层的无线网络接口,如GSM或CDMA,将短信发送出去。 与短信不同,彩信的发送涉及Http协议。WorkingMessage在处理彩信时,会生成SendReq PDU,然后通过Http协议将其发送到MMS代理服务器,服务器再负责转发给收件人。这一过程涉及到更复杂的网络通信和数据编码解码。 总结来说,Android Mms的短信发送流程是一个涉及多个组件协同工作的复杂过程,包括UI层的事件监听、WorkingMessage的预处理、SmsMessageSender的拆分与发送,以及底层的SmsManager和网络通信机制。理解这一流程对于Android开发者优化Mms功能或实现自定义短信服务具有重要的参考价值。