按顺序顺序发送长短信息

时间:2015-02-05 02:22:54

标签: android android-service android-broadcast

我有一种情况,我想向大约10个人发送一条长信息(大约600个字符)。 600个字符的问题消息表示4个短信,因此最终计数为40个消息。

对于长消息,我通常会这样做:

String phoneNo = etPhoneNo.getText().toString();
String msg = etMsg.getText().toString();
try {
  SmsManager smsManager = SmsManager.getDefault();
  ArrayList<String> msgArray = smsManager.divideMessage(msg);

  smsManager.sendMultipartTextMessage(phoneNo, null, msgArray, null, null);
  Toast.makeText(getApplicationContext(), "Message Sent", Toast.LENGTH_LONG).show();

} catch (Exception ex) {
    Toast.makeText(getApplicationContext(), ex.getMessage().toString(), Toast.LENGTH_LONG).show();
    ex.printStackTrace();
}

问题当然是如果我触发10次,我会同时发送40条消息。我不想要,因为短信息有限制。在KitKat上,它在30分钟内发出30条消息。

如何在成功发送上一条消息后30-40秒完成发送下一条消息?我的目标是收到一些确认消息已发送,然后开始发送另一条消息。

2 个答案:

答案 0 :(得分:0)

您可能需要AlarmManager每隔几秒发送一次消息(如果您的应用处于后台)。如果您的应用始终位于前台,则可以使用主题和timertask

如果您想确保成功发送短信,可以参考这篇文章: Java android, how to know if a sms is successfully sent?

答案 1 :(得分:0)

您需要的只是线程技术。制作一个在给定延迟时间内休眠的线程。

<强>阿布罗奇

    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            // put code to execute send SMS here

            try {
                // and make delay 5 second
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    });

    // execute thread
    thread.start();