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

标签 android sms android-service

我是 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/

相关文章:

android - 始终在通知栏中显示服务

android - 关于本地/远程服务、广播接收器和 Intent 服务的结构问题

java - 如何在android中继续在后台运行前台服务

Android - ConstraintLayout 以编程方式设置百分比高度?

android - 为其他应用提供后台服务

java - 如何使用 Twilio Java SDK 发送批量短信?

sms - 从 Twilio 发送短信不会在手机上显示友好名称

java - 在获取预报之前更新位置

android - CWAC-Camera getVideoFilename 返回无效的文件名

android - 如何在 Android 中通过短信发送通话记录历史记录?