Android - 发送许多多部分消息会错过其中一些

Android - Sending Many multi-part Messages will miss some of them

我是 android 开发的新手。我想从我的后台服务发送一些 SMS 消息,它将从服务器获取一些数据并将其发送给一些客户端。到目前为止,它一直运行良好,直到他们在短信中添加了一些描述。从那以后,我的一些消息就没有发送了。

这是我到目前为止所做的:

for (MessageData messageData : result) {
    String message = messageData.getBody();
    String recipient = messageData.getRecipient();

    int parts_size = smsManager.divideMessage(message).size();
    if (parts_size > 1) {
        ArrayList<String> parts = smsManager.divideMessage(message);
                smsManager.sendMultipartTextMessage(recipient, null, parts, null, null);
    } else {
        smsManager.sendTextMessage(recipient, null, message, null, null);
    }
}

我不知道 android 是否可以在 for 循环中处理发送消息,或者我是否做错了什么。

感谢您的帮助。

我尝试遵循并使用 Mike M's very insightful guidance and code 编写一个 SMS 消息发送服务,该服务将(大的或小的)消息排入队列并等待每条消息完全发送后再发送下一条消息。大部分实际工作都是在后台完成的。

SmsService.java is a gist on GitHub因为这里粘贴有点大

我的目标之一是看看我是否可以将必要的功能放入一个 android 组件中。它已经过少量消息的测试,但仍处于试验阶段。 (例如,它避免使用 BroadcastReceiver,依赖于系统发送的服务 startId 的唯一性,严重依赖于表示消息的意图等)

class 有三个静态方法用于设置、发送消息和拆除:

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    SmsService.setup(this);
}

private void sendMyMessages() {
    SmsService.send(this, recipient, sender, "the message text");
}

@Override
protected void onDestroy() {     
    SmsService.teardown(this);
    ...
}