Как передать данные отправленного SMS-сообщения с помощью PendingIntent в BroadcastReciever? - PullRequest
0 голосов
/ 03 июля 2019

Я хочу передать некоторые данные на BroadcastReceiver при отправке большого количества SMS, чтобы указать, какое сообщение отправлено / доставлено.

Я пытался использовать стандарт PendingIntent с разными флагами, но получил неправильные результаты (BroadcastReceiver всегда получает первые / последние дополнения намерения). Кто-нибудь знает, как передать данные на BroadcastReceiver при отправке SMS-сообщения с использованием SmsManager?

Функция отправки SMS:

private void sendSMS(SmsRequest _smsRequest) {

        Intent sentInt = new Intent(Long.toString(System.currentTimeMillis()));
        sentInt.putExtra("SMS_ID", _smsRequest.getmId());

        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, sentInt, 0);

        Intent delivInt = new Intent(Long.toString(System.currentTimeMillis()));
        delivInt.putExtra("SMS_ID", _smsRequest.getmId());

        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, delivInt, 0);

        registerReceiver(sendBroadcastReceiver, new IntentFilter(SENT));
        registerReceiver(deliveryBroadcastReceiver, new IntentFilter(DELIVERED));

        SmsManager
                .getSmsManagerForSubscriptionId(1)
                .sendTextMessage(_smsRequest.getmRecipientNumber(),
                        null,
                        _smsRequest.getmMessage(),
                        sentPI,
                        deliveredPI);
    }

Мой BroadcastReceiver класс:

public class DeliveryReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        switch (getResultCode()) {
            case Activity.RESULT_OK:
                Log.d("sms", "Broadcast received: " + intent.getAction());
                Log.d("sms" ,"Sms was delivered" + intent.getIntExtra("SMS_ID", -1));
                break;
            case Activity.RESULT_CANCELED:
                Log.d("sms" ,"Sms was not delivered");
                break;
        }

    }
}

sendSms() звонит много раз один за другим, и в журналах я получаю много полученных трансляций, как и должно быть, но только с первым SMS_ID SMS-сообщением. Пожалуйста, помогите мне!

...