Что случилось с этим массивом сообщений SmsMessages, которые я получаю в своем BroadcastReceiver в Android? - PullRequest
3 голосов
/ 16 августа 2011

Вот так выглядит мой BroadcastReceiver:

public class IncomingSMSListener extends BroadcastReceiver {
private static final String SMS_EXTRA_NAME = "pdus";

@Override
public void onReceive(Context context, Intent intent) {
    SmsMessage[] messages = fetchSMSMessagesFromIntent(intent);

}

private SmsMessage[] fetchSMSMessagesFromIntent(Intent intent) {
    ArrayList<SmsMessage> receivedMessages = new ArrayList<SmsMessage>();
    Object[] messages = (Object[]) intent.getExtras().get(SMS_EXTRA_NAME);
    for (Object message : messages) {
        SmsMessage finalMessage = SmsMessage
                .createFromPdu((byte[]) message);
        receivedMessages.add(finalMessage);
    }
    return receivedMessages.toArray(new SmsMessage[0]);
}

}

Так что же это за массив сообщений, которые я получаю? Являются ли каждое из этих сообщений в массиве отдельным сообщением, разделяемым системой, когда оно превышает допустимое количество символов для SMS, то есть 160 символов? Или это действительно совершенно разные сообщения, которые приходят одновременно, когда телефон некоторое время не подключен? Может кто-нибудь прояснить это для меня? Я не могу использовать эмулятор, чтобы выяснить это, потому что есть сообщенная ошибка, которая заставляет эмулятор шифровать длинные входящие SMS-сообщения. Заранее спасибо.

1 Ответ

2 голосов
/ 16 августа 2011

Может быть доставлено несколько сообщений (по усмотрению системы): каждое представляет собой отдельное PDU SMS-сообщения (блок описания протокола). Если сообщение фрагментировано (пользователь отправил более 140 символов), вы получите 2 PDU.

...