Android MMS发送代码实现详解

需积分: 11 5 下载量 41 浏览量 更新于2024-07-19 1 收藏 107KB DOC 举报
"MMS发送流程在Android 2.2中的实现主要集中在`com.android.mms.ui.ComposeMessageActivity`类中,涉及点击发送按钮、确认发送、处理非法收件人等关键步骤。" 在Android系统中,MMS( Multimedia Messaging Service,多媒体信息服务)用于发送包含文本、图片、音频或视频等多媒体内容的消息。以下是对MMS发送流程的详细解释: 1. **点击发送按钮**: 当用户点击发送按钮(`mSendButton`)时,`onClick()`方法会被调用。在`ComposeMessageActivity.java`中,`onClick(View v)`方法检查按钮点击事件,并通过`isPreparedForSending()`方法确认消息是否准备好发送。如果准备就绪,将会调用`confirmSendMessageIfNeeded()`进行进一步处理。 2. **确认发送消息**: `confirmSendMessageIfNeeded()`方法主要用于处理发送前的验证。首先,它检查收件人编辑器(`mRecipientsEditor`)是否可见。若不可见,意味着是向已有会话的联系人发送,因此直接调用`sendMessage(true)`发送消息。如果收件人编辑器可见,则会进行更复杂的判断。 3. **判断是否需要以MMS形式发送**: 使用`mWorkingMessage.requiresMms()`方法来确定当前消息是否包含多媒体内容,从而需要以MMS方式发送。 4. **处理非法收件人**: 如果存在非法收件人,`mRecipientsEditor.hasInvalidRecipient(isMms)`会返回`true`。此时,系统将根据收件人是否同时包含合法和非法地址来决定操作: - 若既有合法也有非法收件人,系统会创建一个警告对话框,标题使用`R.string.has_invalid_recipient`资源,显示不合法号码列表,并提供尝试发送和取消发送的选项。 - 若所有收件人都是非法的,系统会显示一个错误消息,提示用户无法发送。 5. **发送与取消监听器**: 对话框中的按钮(`PositiveButton`和`NegativeButton`)分别绑定到`SendIgnoreInvalidRecipientListener`和`CancelSendingListener`,监听用户选择发送还是取消。如果用户选择尝试发送,系统会忽略不合法的收件人并尝试发送;如果选择取消,发送操作将被终止。 这个过程涉及到用户界面交互、数据验证以及错误处理,是MMS发送的关键步骤。在实际应用中,开发者可能需要根据具体需求对这些步骤进行扩展或修改,例如添加额外的验证规则、错误处理逻辑或用户体验优化。