Я хочу создать несколько PendingIntents
для одного и того же пункта назначения в моем приложении. В моем случае пункт назначения - BroadcastReceiver
класс, который отправит уведомление. Полное уведомление является частью содержимого PendingIntent
.
Но я обнаружил, что только последний зарегистрирован PendingIntent
отправляется на onReceive
из BroadcastReceiver
. Поскольку я не могу проверить что-либо о PendingIntent
, потому что это интерфейс только для записи, но я могу подтвердить, что по крайней мере 5 PendingIntents
были созданы с различным содержанием уведомлений. Но только один сделал это на BroadcastReceiver
, и это был последний. Это означает, что каждый новый PendingIntent
будет перезаписывать данные предыдущего.
Есть ли способ, как зарегистрировать 10 или более PendingIntents
с тем же местом назначения, но с другим телом?
Пример создания PendingIntent
для уведомления:
data class PendingNotification(val objectUID: Long, val pInt: PendingIntent)
var pendingIntentList = mutableListOf<PendingNotification>()
fun createAlarmPendingIntent(a: Activity, nb: NotificationCompat.Builder?, notId: Int,
id: Long): PendingIntent{
val nInt = Intent(a, AlarmReceiver::class.java)
nInt.putExtra(AlarmReceiver.NOTIFICATION_ID, notId)
nInt.putExtra(AlarmReceiver.NOTIFICATION, nb?.build())
val pInt = PendingIntent.getBroadcast(
a,
0,
nInt,
PendingIntent.FLAG_UPDATE_CURRENT
)
App.log("PendingId - createPendingInt: $notId")
//save pending intent for future cancelation by id
pendingIntentList.add(PendingNotification(id, pInt))
return pInt
}
private fun createAlarm(){
val pInt = app.createAlarmPendingIntent(a, nb, notId, id)
val cal = Calendar.getInstance()
cal.time = alarmTime
app.aManager.set(AlarmManager.RTC_WAKEUP, cal.timeInMillis, pInt)
}