文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

简单掌握Android开发中彩信的发送接收及其附件的处理

2022-06-06 08:58

关注

一. 彩信发送:
  彩信比短信麻烦很多。从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。

单卡手机彩信发送的时序图如图所示

2016222145620358.png (1047×608)

双卡手机彩信发送的时序图如图1.5所示:

2016222145651717.jpg (1040×599)

二.彩信接收
彩信接收的时序图如图1.3所示:

2016222145728459.jpg (460×308)

三、接收Wappush信息及彩信附件增加删除
1..Wappush接收的时序图如图所示:

2016222145744634.jpg (470×353)

2.彩信附件增加删除
彩信附件添加:在ComposeMessageActivity里的addAttachment(int type) 函数 根据type的不同,分成7个case 

MediaSelectListActivity.ADD_IMAGE MediaSelectListActivity.TAKE_PICTURE MediaSelectListActivity.ADD_VIDEO MediaSelectListActivity.RECORD_VIDEO MediaSelectListActivity.ADD_SOUND MediaSelectListActivity.RECORD_SOUND MediaSelectListActivity.ADD_SLIDESHOW

从外面的activity读取媒体数据的应用返回的时候都回到onActivityResult()函数。

删除附件,AttachmentEditor里面有个handler,用来给ComposeMessageActivity传消息。所有删除附件操作的按钮都在AttachmentEditor上。对不同的媒体类型有不同的按钮,但是按下之后出口是一样的,之所以一样是因为所有的附件都存在SlideshowModel里,而这个SlideshowModel是: ArrayList<SlideModel> mSlides; 一列儿slide组成的。 每个slide可以包含video,image,audio,text, 其中前三者一般不能两两同时存在,唯一的例外是image和audio.
说回到那个remove操作,composeMessageActivity的Handler里的handleMessage函数,接到这个删除msg之后的操作是setAttachment().

您可能感兴趣的文章:Android编程之非调用系统界面实现发送彩信的方法(MMS)Android实现带附件的邮件发送功能Android开发中怎样调用系统Email发送邮件(多种调用方式)Android中发送Http请求(包括文件上传、servlet接收)的实例代码Android HTTP发送请求和接收响应的实例代码Android发送GET与POST请求的DEMO详解Android中Webview打开网页的同时发送HTTP头信息方法android实现蓝牙文件发送的实例代码,支持多种机型Android发送短信功能代码Android 后台发送邮件示例 (收集应用异常信息+Demo代码)android中可以通过两种方式调用接口发送短信Android下通过httpClient发送GET和POST请求的实例代码Android实现将已发送的短信写入短信数据库的方法Android实现彩信附件的添加与删除功能


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯