ОК, в итоге мы нашли решение.Поскольку контекст, передаваемый методу onReceive () в BroadCastReceiver, не позволяет мне зарегистрировать другие BroadcastReceivers для прослушивания события «message sent», я в итоге получил контроль над контекстом приложения и сделал следующее:
В BroadcastReceiver:
SmsManager smsManager = SmsManager.getDefault();
Intent intent = new Intent(SENT_SMS_FLAG);
PendingIntent sentIntent = PendingIntent.getBroadcast(context, 0,
intent, 0);
SMSForwarderApp.getAppContext().registerReceiver(
new MessageSentListener(),
new IntentFilter(SENT_SMS_FLAG));
smsManager.sendTextMessage("Here goes the destination of the SMS", null,
"Here goes the content of the SMS", sentIntent, null);
SENT_SMS_FLAG - это просто статическая строка, которая однозначно идентифицирует только что созданное мной намерение.Мой MessageSentListener выглядит так:
public class MessageSentListener extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
int resultCode = this.getResultCode();
boolean successfullySent = resultCode == Activity.RESULT_OK;
//That boolean up there indicates the status of the message
SMSForwarderApp.getAppContext().unregisterReceiver(this);
//Notice how I get the app context again here and unregister this broadcast
//receiver to clear it from the system since it won't be used again
}
}