gpt4 book ai didi

android - 在 Android 上更新有关通知 Intent 的额外数据?

转载 作者:行者123 更新时间:2023-11-29 00:02:45 25 4
gpt4 key购买 nike

我无法更新通知操作中包含的额外数据(MainActivity.kt 的第 34 行)。如果我发出多个通知并单击它们上的操作按钮,第一个通知中包含的额外数据始终会传送(NotificationBroadcastReceiver.kt 的第 16 行)。

该值打印在 MainActivity.kt 的第 33 行和 NotificationBroadcastReceiver.kt 的第 17 行的日志上。

即使在清除通知并从任务管理器中终止应用程序后,也会发生这种情况。卸载并重新安装该应用程序,将有助于进行一次更新。

Notification Action Demo

来自 MainActivity.kt

  fun notify(v:View) {
val time = System.currentTimeMillis()
val mBuilder = NotificationCompat
.Builder(this,this.localClassName)
.setSmallIcon(android.R.drawable.btn_default)
.addAction(android.R.drawable.arrow_down_float,"test",getSnoozePendingIntent(time))
NotificationManagerCompat.from(this).notify(time.toInt(),mBuilder.build())
}

private fun getSnoozePendingIntent(time:Long):PendingIntent {
val snoozeIntent = Intent(this,NotificationBroadcastReceiver::class.java)
Log.d("TimeMillis before",time.toString())
snoozeIntent.putExtra(NotificationBroadcastReceiver.timeTag,time)
return PendingIntent.getBroadcast(this,0,snoozeIntent,0)
}

来自 NotificationBroadcastReceiver.kt

  override fun onReceive(context:Context,intent:Intent) {
val time = intent.getLongExtra(timeTag,0)
Log.d("TimeMillis after",time.toString())
NotificationManagerCompat.from(context).cancel(time.toInt())
}

最佳答案

如果您计划有多个未决 Intent ,请更改 requestCode:“int:发送者的私有(private)请求代码”

return PendingIntent.getBroadcast(this, 0, snoozeIntent, 0)

收件人:

return PendingIntent.getBroadcast(this, uniqueCode++, snoozeIntent, 0)

或者:

设置 FLAG_UPDATE_CURRENT 以更新单个未决 Intent :“标志指示如果所描述的 PendingIntent 已经存在,则保留它但用这个新 Intent 中的内容替换它的额外数据。”

return PendingIntent.getBroadcast(this, 0, snoozeIntent, PendingIntent.FLAG_UPDATE_CURRENT)

https://developer.android.com/reference/android/app/PendingIntent#FLAG_UPDATE_CURRENT

关于android - 在 Android 上更新有关通知 Intent 的额外数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51518084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com