我有一种情况,我想向大约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秒完成发送下一条消息?我的目标是收到一些确认消息已发送,然后开始发送另一条消息。
答案 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();