如何从服务中的AsyncTask发送短信获取传递状态?

时间:2017-08-08 15:15:35

标签: android android-asynctask android-service smsmanager

我正在尝试从服务中的 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;
    }
}

0 个答案:

没有答案