У меня есть служба, которая отправляет смс сообщения (через AsyncTask).Мне нужно захватить статус отправки / получения с помощью BraodcaseReceiver.По какой-то причине я не могу получить правильный код результата от получателя.Если я реализую onReceive в моем Сервисе, resultCode всегда будет нулевым.
Не уверен, что я делаю неправильно, поэтому возникает вопрос, как правильно отправить сообщение из класса Broadcase Receiver обратно в фоновую службу?
Фон:
Приложение состоит из одного действия, которое не выполняет ничего, кроме запуска фоновой службы.В этом сервисе я отправляю смс-сообщения.
Я не очень хорош в шаблонах проектирования Android, но из того, что я видел в интернете, чтобы получить результат статуса смс, мне нужно создать отдельный класскак BraodcaseReceiver.Вот почему я создал один.Этот BroadcastReceiver должен получить статус отправленного сообщения, и я хочу иметь возможность передавать это значение службе (позже из службы в деятельность)
Итак, что я делаю: Aactivty-> Сервис-> SendSMS, затем при завершении задачи я хотел бы получить статус отправленной смс.
Примечание: Я только что понял, что не использовалAsyncTask для отправки смс.Я хочу использовать службу только в качестве менеджера AsyncTasks, которые отправляют смс-сообщения, и я не хочу, чтобы они отправляли сообщения, чтобы заблокировать службу.Это хороший дизайн?
Сервис:
protected boolean sendSMS(String number) {
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);
registerReceiver(sendBroadcastReceiver, new IntentFilter(SENT));
registerReceiver(deliveryBroadcastReceiver, new IntentFilter(DELIVERED));
String destinationAddress = number;
String smsMessage = String.format("This is test");
String scAddress = null;
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(destinationAddress, scAddress, smsMessage, sentPI, deliveredPI);
return true;
}
BroadcastReceiver sendBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Integer resultCode = intent.getExtras().getInt("msg");
//resultCode is always null here
Log.d("Debug", "sendBroadcastReceiver code: "+ resultCode);
}
};
BroadcastReceveier:
public class SentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent arg1) {
Integer resultcode = getResultCode();
//**for some reason when I define onReceive in Service class**
//**I don't get any debug message as if this code doesn't execute**
Log.d("Debug", "Code: "+ resultcode);
Intent intent = new Intent("SMS_SENT");
intent.putExtra("msg", resultcode);
context.sendBroadcast(intent);
}
}