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

我不知道,如果机器人能够处理发送在环或如果我做错了什么消息。

谢谢你的帮助。

+0

在'else'块中添加一个断点并在调试器模式下运行。然后查看是否到达,并检查消息的大小(带描述)是否小于160(短消息的最大大小)。 – chornge

+0

是的,它到达那里,如果消息小于160,我检查了数据库的最大数字字符是491 –

+0

它达到'else'有条件吗?如果是这样的话,这意味着你的'parts_size'不大于1. – chornge

我试图关注并使用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); 
    ... 
}