【问题标题】:Listen to incoming multipart SMS message收听传入的多部分 SMS 消息
【发布时间】:2012-04-19 10:47:07
【问题描述】:

我可以捕捉到新收到的 SMS 消息。但如果那是多部分消息,我的广播接收器会多次接收消息的所有部分。

有没有办法像默认消息应用一样一次性接收整条消息?

【问题讨论】:

  • 你怎么知道默认消息应用程序会一次收到整条消息?我猜它会分别接收它们,然后在内部组合它们。
  • @slayton 谢谢。所以我想我可以比较日期时间并将所有部分合二为一。你认为某处有一个标志——表明这条消息是一条大消息的一部分吗?
  • 我不知道,但您可以随时查看 Android 源代码,看看他们是如何做到的。
  • @slayton 谢谢我明白了:-)

标签: android sms broadcastreceiver multipart


【解决方案1】:

圣洁...!

看完Android源码(this file)后,我意识到这是一个愚蠢的问题……

这是我的接收器:

@Override
public void onReceive(Context context, Intent intent) {
    Log.d(ClassName, "received SMS");

    Bundle bundle = intent.getExtras();
    if (bundle != null) {
        Object[] pdus = (Object[]) bundle.get("pdus");
        // here is what I need, just combine them all  :-)
        final SmsMessage[] messages = new SmsMessage[pdus.length];
        Log.d(ClassName, String.format("message count = %s", messages.length));
        for (int i = 0; i < pdus.length; i++) {
            messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
        }
    }
}// onReceive()

糟糕...我懒得看我的代码。我已经一次收到了消息的所有部分。

【讨论】:

猜你喜欢
  • 2011-10-28
  • 1970-01-01
  • 2013-01-10
  • 2020-03-06
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多