Android 短信模块分析(五) MMS之彩信的发送与接收
2013-07-18 09:25
656 查看
一. 彩信发送:
彩信比短信麻烦很多。从sendMmsWorker函数的参数就可以看出来:(conv, mmsUri, persister, slideshow, sendReq) 上下文,uri,PduPersister(彩信是用pdu的),slideshow 包含了所有的彩信信息,sendreq包含了mime封装mms时的headers,也包括了from,to等信息 。
(1)函数 sendMmsWorker:
前面挺长一段代码,检查这个对话(conversation)之前还有没有未发送的信息。需要提到一下MessageStatusListener,这个Interface接口定义在WorkingMessage.java里,而实现是在ComposeMessageActivity.java中,所以前者在一些状态改变的时候可以很方便的调用后者的一些函数作相应的改动。MessageStatusListener中主要包括: onProtocolChanged彩信短信互切换,onAttachmentChanged附件改变,onPreMessageSent发消息前,onMessageSent发消息后。这里调用了onPreMessageSent这个监听函数, 然后ComposeMessageActivity 就会调用resetMessage函数 ,这个函数会调整显示,focus,软键盘等。
检查mmsUri。如果这个uri是空的话,直接造一个新的uri继续发送。这个createDraftMmsMessage(persister, sendReq, slideshow);函数可以包含所有发送需要的信息, 如果uri不为空,调用的是updateDraftMmsMessage(mmsUri, persister, slideshow, sendReq); 总之功能是把这个将发送的mms,存disk了,也就是存draft了。
deleteDraftSmsMessage 删除草稿
创建一个MmsMessageSender,用这个sender来调用sendMessage函数
如果函数返回值表示刚刚发送出去的其实是一个短信sms,而已。于是要把数据库里存着的draft删掉。
调用onMessageSent这个监听函数,调用ComposeMessageActivity的onMessageSent,这个函数功能是重新显示conversationList。
(2)createDraftMmsMessage(persister, sendReq, slideshow); 和 updateDraftMmsMessage(mmsUri, persister, slideshow, sendReq); 这两个函数从本质上讲是一样的,把附件的东西以pdubody的形式存下来,另外就是更新uri。
3)MmsMessageSender.java类,在mms/transaction下面,实现了MessageSender接口,这个接口sendMessage并返回boolean的值。若发送的是mms,返回true。若发送的是sms,返回false。
单卡手机彩信发送的时序图如图1.1所示
双卡手机彩信发送的时序图如图1.5所示:
二.彩信接收
彩信接收的时序图如图1.3所示:
彩信比短信麻烦很多。从sendMmsWorker函数的参数就可以看出来:(conv, mmsUri, persister, slideshow, sendReq) 上下文,uri,PduPersister(彩信是用pdu的),slideshow 包含了所有的彩信信息,sendreq包含了mime封装mms时的headers,也包括了from,to等信息 。
(1)函数 sendMmsWorker:
private void sendMmsWorker(Conversation conv, Uri mmsUri, PduPersister persister, SlideshowModel slideshow, SendReq sendReq) { ..... }
前面挺长一段代码,检查这个对话(conversation)之前还有没有未发送的信息。需要提到一下MessageStatusListener,这个Interface接口定义在WorkingMessage.java里,而实现是在ComposeMessageActivity.java中,所以前者在一些状态改变的时候可以很方便的调用后者的一些函数作相应的改动。MessageStatusListener中主要包括: onProtocolChanged彩信短信互切换,onAttachmentChanged附件改变,onPreMessageSent发消息前,onMessageSent发消息后。这里调用了onPreMessageSent这个监听函数, 然后ComposeMessageActivity 就会调用resetMessage函数 ,这个函数会调整显示,focus,软键盘等。
检查mmsUri。如果这个uri是空的话,直接造一个新的uri继续发送。这个createDraftMmsMessage(persister, sendReq, slideshow);函数可以包含所有发送需要的信息, 如果uri不为空,调用的是updateDraftMmsMessage(mmsUri, persister, slideshow, sendReq); 总之功能是把这个将发送的mms,存disk了,也就是存draft了。
deleteDraftSmsMessage 删除草稿
创建一个MmsMessageSender,用这个sender来调用sendMessage函数
如果函数返回值表示刚刚发送出去的其实是一个短信sms,而已。于是要把数据库里存着的draft删掉。
调用onMessageSent这个监听函数,调用ComposeMessageActivity的onMessageSent,这个函数功能是重新显示conversationList。
(2)createDraftMmsMessage(persister, sendReq, slideshow); 和 updateDraftMmsMessage(mmsUri, persister, slideshow, sendReq); 这两个函数从本质上讲是一样的,把附件的东西以pdubody的形式存下来,另外就是更新uri。
3)MmsMessageSender.java类,在mms/transaction下面,实现了MessageSender接口,这个接口sendMessage并返回boolean的值。若发送的是mms,返回true。若发送的是sms,返回false。
单卡手机彩信发送的时序图如图1.1所示
双卡手机彩信发送的时序图如图1.5所示:
二.彩信接收
彩信接收的时序图如图1.3所示:
相关文章推荐
- Android 短信模块分析(五) MMS之彩信的发送与接收
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(三,接收彩信<1,接收短信>)
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(三,接收彩信<1,接收短信>)
- Android 短信模块分析(四) MMS之短信的发送与接收
- Android 短信模块分析(四) MMS之短信的发送与接收
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(三,接收彩信<2,下载彩信>)
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(三,接收彩信<2,下载彩信>)
- Android 短信模块分析(六) 接收Wappush信息及彩信附件增加删除
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(二,发送彩信<1>)
- Android入门-MMS-短信/彩信发送流程+代码分析
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(一,添加附件)
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(二,发送彩信<1>)
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(一,添加附件)
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(二,发送彩信<2>)
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(二,发送彩信<2>)
- Android 短信模块分析(一) Mms功能概述及源码目录结构分析
- android入门-MMS-短彩信发送/接收流程【图】
- Android短信发送和接收流程源码分析
- Android 短信模块分析(八) MMS数据库表关系
- Android 短信模块分析(七) MMS数据库定义及结构整理