【发布时间】:2012-08-03 03:14:57
【问题描述】:
我正在开发一个执行以下操作的应用:
- 接收短信
- 发送短信
- 为发件人执行一些计算任务。
是否有可能是短信发送失败。谁能告诉我如何管理发送失败的短信队列,并在一段时间后继续重试发送。
我看过代码,但不知道如何处理 SMS 队列并重新发送它们。
这是代码:
private void sendSMS(String phoneNumber, String message)
{
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
new Intent(SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
new Intent(DELIVERED), 0);
//---when the SMS has been sent---
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "Generic failure",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "Radio off",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(SENT));
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
}
【问题讨论】:
-
您需要什么帮助?在我看来,您对 PendingIntent 的使用是正确的。
-
嘿 wojci 我的代码很好,但现在我正在寻找进一步推进的方法,短信可能无法发送到发件人,因为用户在该帐户中没有信用,所以我们管理一个队列并在一段时间后检查队列并重新发送消息。谢谢