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

 更新时间:2016年02月22日 15:00:00   作者:时之沙  
这篇文章主要介绍了简单掌握Android开发中彩信的发送接收及其附件的处理,由于微信的流行,使用彩信的用户已经很少了,简单了解即可,需要的朋友可以参考下

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

相关文章

  • 从零开始使用gradle配置即可执行的Hook库详解

    从零开始使用gradle配置即可执行的Hook库详解

    这篇文章主要为大家介绍了从零开始使用gradle配置即可执行的Hook库详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Android自定义评分控件的完整实例

    Android自定义评分控件的完整实例

    在Android开发中,我们经常会用到对商家或者商品的评价,运用星星进行打分,下面这篇文章主要给大家介绍了关于Android自定义评分控件的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • Android ListView和Adapter数据适配器的简单介绍

    Android ListView和Adapter数据适配器的简单介绍

    这篇文章主要介绍了Android ListView和Adapter数据适配器的简单介绍,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Android中Fragment管理及重叠问题的解决方法

    Android中Fragment管理及重叠问题的解决方法

    最近做项目碰到了Fragment重叠的问题,后来通过种种方法得以解决了,所以想着总结下这个问题的解决方法,以及Android中Fragment的管理,方便自己也给有需要的朋友们提供以帮助,感兴趣的朋友们下面通过这篇文章一起来学习学习吧。
    2016-11-11
  • 导入takephoto库编译失败与glide库冲突应排除依赖

    导入takephoto库编译失败与glide库冲突应排除依赖

    今天小编就为大家分享一篇关于导入takephoto库编译失败与glide库冲突应排除依赖的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • 为什么不要在 Flutter 中使用全局变量

    为什么不要在 Flutter 中使用全局变量

    这篇文章主要介绍了为什么不要在Flutter中使用全局变量,全局变量是公共变量,可以被Flutter程序中的每个方法和对象访问,全局变量是局部变量的替代品,它们在方法中创建并在该方法中访问
    2022-08-08
  • Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)

    Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)

    这篇文章主要介绍了Android通过Handler与AsyncTask两种方式动态更新ListView的方法,结合实例形式分析了ListView动态更新的常用技巧,并附上完整实例源码供读者下载,需要的朋友可以参考下
    2015-12-12
  • Android 进度条自动前进效果的实现代码

    Android 进度条自动前进效果的实现代码

    这篇文章主要介绍了Android 进度条自动前进效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Android自定义ScrollView实现放大回弹效果实例代码

    Android自定义ScrollView实现放大回弹效果实例代码

    本篇文章主要介绍了Android自定义ScrollView实现放大回弹效果实例代码,具有一定的参考价值,有兴趣的可以了解一下。
    2017-03-03
  • Android6.0获取动态权限代码示例

    Android6.0获取动态权限代码示例

    这篇文章主要介绍了Android6.0以上获取动态权限代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11

最新评论