解析短信PDU

发布于 2024-11-01 10:45:41 字数 369 浏览 3 评论 0原文

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

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

有人能指出我该怎么做吗?

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

Seems to be that I need to parse PDU byte array received during SMS BroadcastReceiver:

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

Can someone point me how to do it?

I know that PDUs can be handled using SmsMessage.createFromPdu((byte[]) pdus[i]) but it's not what I'm looking for. I need more precise control over pdu bytes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

弥繁 2024-11-08 10:45:41

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

I have found solution - there's nice Java and dot NET library (under Apache license), which handles all PDU related stuff - parsing and so on. It's SMSLib

﹏半生如梦愿梦如真 2024-11-08 10:45:41
@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();
    }                
}
@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();
    }                
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文