我正在尝试从服务中的 AsyncTask 发送多条短信,问题是我想检查短信是否成功发送但是一旦doInBackground方法返回,AsyncTask将完成,如何发送多条SMS消息并检查交付结果?
这是我的代码:
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;
}
}