我是 Android 开发新手。我想从我的后台服务发送一些短信,它将从服务器获取一些数据并将其发送到一些客户端。到目前为止,它运行得很好,直到他们在短信中添加了一些描述。从那时起,我的一些消息就没有发送了。
这是我到目前为止所做的:
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、依赖于系统发送的 Service startId 的唯一性、严重依赖于表示消息的 Intent 等)
该类具有三个静态方法,用于设置它、发送消息和拆除它:
@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);
...
}
关于Android - 发送许多多部分消息会错过其中一些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46571946/