Android MMS,如何解析PDU?

时间:2014-03-26 08:37:56

标签: android broadcastreceiver android-broadcast mms pdu

好的人,

  1. 我知道如何拦截短信和/或彩信接收器广播
  2. 我知道如何解析SMS pdu
  3. 我知道如何将彩信和短信保存到设备存储
  4. 我唯一缺少的是如何解析MMS PDU并获取二进制数据及其mime类型。

    有人能指出我的资源/示例,或者只是解释一下如何做到这一点?

    public class MmsReceiver extends BroadcastReceiver {
      private static final String PDUS = "pdus";
    
      @Override
      public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        Object[] pdus = (Object[]) bundle.get(PDUS); //getting PDU's from extras
    
        //what next??
    
      }
    }
    

2 个答案:

答案 0 :(得分:0)

您想要做类似

的事情
SendReq parsed = (SendReq) new PduParser(pduByteArray).parse();

例如,如果是传出的MMS SendReq;如果它是一个传入的,我相信你想要转换为一个RetrieveConf。然后有访问者等将它拆开。

可悲的是,这些对象上的toString()并没有给你任何特别有用的东西(我们可以梦想!)

在RetrieveConf中,您可以调用getContentType(),它返回消息中类型的数组。为了获得实际的二进制数据,我认为您可能需要直接转到系统内容存储表;我不认为完整的二进制数据存储在PDU对象中(即使它可能已经通过网络发送;我认为它一旦到达系统数据库就被隐藏到系统数据库中,分成单个对象)

答案 1 :(得分:-2)

    SmsMessage[] sms = new SmsMessage[pdus.length];
    sms[0] = SmsMessage.createFromPdu((byte[]) pdus[0]);