1

好吧,伙计们,

  1. 我知道如何拦截 SMS 和/或 MMS 接收器广播
  2. 我知道如何解析短信 pdu
  3. 我知道如何将彩信和短信保存到设备存储

对我来说唯一缺少的是如何解析 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??

  }
}
4

2 回答 2

0

你想做类似的事情

SendReq parsed = (SendReq) new PduParser(pduByteArray).parse();

例如,如果它是一个外发彩信 SendReq;如果它是传入的,我相信您想改为投射到 RetrieveConf。然后有访问器等将其分开。

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

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

于 2015-06-01T21:51:13.207 回答
-2
    SmsMessage[] sms = new SmsMessage[pdus.length];
    sms[0] = SmsMessage.createFromPdu((byte[]) pdus[0]);
于 2015-02-27T07:06:19.283 回答