我正在開發執行操作的應用程序:短信隊列處理失敗的短信
- 接收SMS
- 發送短信
- 做一些計算任務發件人。
SMS可能無法發送。任何人都可以告訴我如何管理髮送失敗的SMS消息隊列,並在一段時間後繼續重試發送它們。
我已經看到了代碼,但不知道如何處理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的使用對我來說看起來是正確的。 – wojciii 2012-08-06 11:10:28
嘿wojci我的代碼是好的,但現在我正在想辦法進一步推進,有可能是短信發送給發件人,因爲用戶沒有信用在那裏帳戶,所以我們管理一個隊列,並檢查一段時間後的隊列和重試發送消息。 thanx – Fawad 2012-08-06 11:54:51