Android - 发送多个多部分消息将错过其中一些
问题描述:
我是新来的android开发。我想从我的后台服务发送一些SMS消息,它会从服务器获取一些数据并将其发送给某些客户端。到目前为止,它完美地工作,直到他们添加一些描述文字信息。从那以后,我的一些消息不会被发送。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);
}
}
我不知道,如果机器人能够处理发送在环或如果我做错了什么消息。
谢谢你的帮助。
答
我试图关注并使用Mike M's very insightful guidance and code来编写一条SMS消息发送服务,该消息发送(大或小)消息并在发送下一个消息之前等待每个消息完全发送。大部分的实际工作都是在后台完成的。
SmsService.java is a gist on GitHub因为粘贴在这里有点大。
我的目标之一是看我是否可以将必要的功能放到一个单独的android组件中。它已经过少量的消息测试,但仍然是实验性的。 (例如,它避免使用BroadcastReceiver,依靠系统发送的服务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);
...
}
在'else'块中添加一个断点并在调试器模式下运行。然后查看是否到达,并检查消息的大小(带描述)是否小于160(短消息的最大大小)。 – chornge
是的,它到达那里,如果消息小于160,我检查了数据库的最大数字字符是491 –
它达到'else'有条件吗?如果是这样的话,这意味着你的'parts_size'不大于1. – chornge