首页 > 解决方案 > 快速连续发送的广播导致广播接收器出现问题

问题描述

我的 SMS 广播接收器有一个奇怪的问题。当用户快速连续发送多条短信时,广播接收器意图两次都发送最新信息。

例如:

User sends SMS ID 2
User sends SMS ID 3

接收者得到:

Mark ID 3 as Read
Mark ID 3 as Read

这是我的短信代码:

for (ignored in parts) {
        sentReceivers.add(PendingIntent.getBroadcast(this, mId.toInt(), Intent(this, SmsSentBroadcast::class.java)
                .putExtra("message_uri", messageUri.toString()).putExtra("message_id", mId), PendingIntent.FLAG_UPDATE_CURRENT))

        if (delivery)
            deliverReceivers!!.add(PendingIntent.getActivity(this, mId.toInt(), Intent(this, SmsDeliverBroadcast::class.java).putExtra("message_uri", messageUri.toString()).putExtra("message_id", mId), PendingIntent.FLAG_UPDATE_CURRENT))
    }

    smsManager.sendMultipartTextMessage(address, null, parts, sentReceivers, deliverReceivers)

标签: android

解决方案


问题是mId.toInt()在某些情况下不是唯一的,所以PendingIntent.FLAG_UPDATE_CURRENT要覆盖它。

现在mId.toInt()每次都是独一无二的,广播按预期工作


推荐阅读