I am trying to send multiple SMS messages from an AsyncTask inside a Service, the problem is that I want to check if the SMS messages were delivered successfully or not but the AsyncTask will finish once the doInBackground method returns, how to send multiple SMS messages and check the delivery result?
Here is my code:
class SendSmsMessages extends AsyncTask<Void, Void, Void> {
private final ArrayList<String> messages;
public SendSmsMessages(ArrayList<String> messages) {
this.messages = messages;
}
@Override
protected Void doInBackground(Void... param) {
for (String message : messages) {
try {
Intent intent = new Intent("send_message");
PendingIntent pendingIntent = PendingIntent.getBroadcast(MessagesService.this, 0, intent, 0);
MessagesService.this.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (getResultCode() == RESULT_OK) {
//Messages were sent clear the database
}
}
}, new IntentFilter("send_message"));
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(MessagesService.this.phoneNumber, null, message, pendingIntent, null);
} catch (Exception ex) {
Log.d(TAG, "Failed to send sms: " + ex.getMessage());
ex.printStackTrace();
}
}
return null;
}
}