Android接收彩信时解析PDU的过程记录

原创 2015年11月19日 22:04:53

彩信是以PDU数据包的方式传输的,因此接收彩信的过程也就是解析PDU的过程,解析PDU的方法在PduParser.parse()中。通过HTTP请求下载到彩信的PDU,装入到ByteArrayInputStream字节流中,对该字节流按照PDU的数据包格式逐一解析。

1、通过protected PduHeaders parseHeaders(ByteArrayInputStream pduDataStream){...}方法,获取PDU的包头

2、protected PduBody parseParts(ByteArrayInputStream pduDataStream) {...}方法获取PDUbody,body中包含了彩信的所有附件Part

protected PduBody parseParts(ByteArrayInputStream pduDataStream) {
    PduBody body = new PduBody();
    int count = parseUnsignedInt(pduDataStream);//获取Part的个数
    for(int i = 0; i < count; i++){
        /* parse part's content-type */
        HashMap<Integer, Object> map = new HashMap<Integer, Object>();
        byte[] contentType = parseContentType(pduDataStream, map);//parseContentType中调用parseContentTypeParams方法,会解析出Part相关的各个字段,包括name,cid,cl等等
        /* get name parameter */
        byte[] name = (byte[]) map.get(PduPart.P_NAME);
        if (null != name) {
            part.setName(name);
        }
        /* get charset parameter */
        Integer charset = (Integer) map.get(PduPart.P_CHARSET);
        if (null != charset) {
            part.setCharset(charset);
        }
        //通过类似的方式将各个字段放入part中
        //接下来将附件的文件内容存入文件
    }
}

3、通过上面的方法,解析出彩信的所有内容,然后通过PduPersist.persist()方法将彩信内容写入数据库,该方法会调用如下方法,逐一将PduPart写入数据库

public Uri persistPart(PduPart part, Uri uri, HashMap<Uri, InputStream> preOpenedFiles){
    ContentValues values = new ContentValues();
    values.put(Part.CHARSET, part.getCharset());
    ...//依次获取各个字节
    //最后insert到数据库
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

还原Android PDU彩信

几周前在做Android彩信数据库还原时遇到了一个很棘手的问题,就是Android的彩信数据库不向短信数据库那样可以方便的用一条insert语句创建一条记录,而我没有得到许可去修改Android平台的...

彩信的通知短信PDU数据分析

目录 一、数据采集... 1 1、采集数据方法... 1 2、样品数据... 1 3、关键解码函数... 3 二、MMS Notification 的 Short Message 结构说明....

彩信pdu格式描述文档

  • 2009-12-14 15:27
  • 64KB
  • 下载

MMS彩信PDU打包代码

  • 2011-09-22 10:59
  • 228KB
  • 下载

Android短信源码分析 --PDU解析过程

6.14 PDU解析过程   SmsMessage.java,通过createFromPdu开始解析PDU数据。     public static SmsMessage createFromPdu...

android彩信接收辅助源码

  • 2013-01-28 11:42
  • 30KB
  • 下载

[Android][N/A][SMS]PDU解析——利用AT指令发送CLASS分类短信

Revision Author Date Description 1.0 一只菠萝 2014.03.31 Creator 1.0 一只菠萝 2015.0...

android 彩信接收到附件的下载原理分析

彩信收发宏观步骤: a、 终端A向彩信中心(MMSC)发送一条彩信,通过WAP网关POST到MMSC b、 MMSC通过PushProxy网关,向SMSC发送PUSH消息,SMSC转发到终...

Android 5.0 Lollipop 短彩信接收流程

短彩信接收流程和来电流程有点类似,最开始也是RIL层上报短信事件,然后上层来处理接收短信的流程。android的ril位于应用程序框架与内核之间,分成了两个部分,一个部分是rild,它负责socket...

android入门-MMS-短彩信发送/接收流程【图】

短信发送流程: ConversationList --> (createNewMessage/OpenThread) -->  ComposeMessageActivity(confirmSend...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)