Android - 发送许多多部分消息将遗漏其中一些消息

时间:2017-10-04 18:39:03

标签: android sms android-service

我是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-loop中的发送消息,或者我是否做错了。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我尝试关注并使用Mike M's very insightful guidance and code编写一条短信发送服务,该服务将(大或小)消息排入队列,并等待每封消息在发送下一封消息之前完全发送。大多数实际工作都是在后台完成的。

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

我的目标之一是看看我是否可以将必要的功能放入一个Android组件中。它已经过少量的消息测试,但它仍然是实验性的。 (例如,它避免使用BroadcastReceiver,依赖于系统发送的Service startIds的唯一性,很大程度上依赖于意图来表示消息等)。

该类有三种静态方法可用于设置,发送消息和将其删除:

@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);
    ...
}