3

似乎是我需要解析在 SMS BroadcastReceiver 期间收到的 PDU 字节数组:

@Override
public void onReceive(Context context, Intent intent) 
{ 
    Bundle bundle = intent.getExtras();
    Object[] pdus = (Object[]) bundle.get("pdus");
}

有人可以指出我该怎么做吗?

我知道可以使用 PDU 来处理SmsMessage.createFromPdu((byte[]) pdus[i])它,但这不是我想要的。我需要更精确地控制 pdu 字节。

4

2 回答 2

2

我找到了解决方案——有很好的 Java 和 dot NET 库(在 Apache 许可下),它处理所有与 PDU 相关的东西——解析等等。这是短信库

于 2011-05-22T18:34:47.000 回答
-1
@Override
public void onReceive(Context context, Intent intent) {
    Bundle bundle = intent.getExtras();

    SmsMessage[] msgs = null;

    if (bundle == null) return;

    Object[] pdus =  (Object[]) bundle.get("pdus");

    msgs = new SmsMessage[pdus.length];
    smsCount = msgs.length;
    String originalAddress;
    String tmpSmsBody;
    for (int i=0; i<msgs.length; i++){
        msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);

        // Original Address
        originalAddress = msgs[i].getOriginatingAddress();

        // Message body
        tmpSmsBody= msgs[i].getMessageBody().toString();
    }                
}
于 2011-04-14T13:02:11.150 回答