我正在尝试在我的Android应用中实现通知功能。
当用户点击通知时,如果活动没有运行,则运行该活动。但是,如果活动已经在运行,我不希望重新创建它,而只想通过拦截onNewIntent函数的意图来刷新数据。
问题在于,每次我点击通知时,活动都会被重新创建,而onNewIntent函数不会被调用。
当我从服务中创建通知时,这个问题就会出现。 但是,当我从要运行的同一活动中创建通知时,一切都正常工作。
我搜索了互联网并尝试了所有我找到的解决方案,但仍然无法解决。
我尝试了几种意图标记的组合,但什么也没起作用。
这是我的代码:
当我从服务中创建通知时,这个问题就会出现。 但是,当我从要运行的同一活动中创建通知时,一切都正常工作。
我搜索了互联网并尝试了所有我找到的解决方案,但仍然无法解决。
我尝试了几种意图标记的组合,但什么也没起作用。
这是我的代码:
val intent : Intent = Intent(this, HomeActivity::class.java)
finalIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
val pendingIntentFlags : Int = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
{
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE
}
else
{
PendingIntent.FLAG_UPDATE_CURRENT
}
val pendingIntent : PendingIntent? = TaskStackBuilder.create(context).run {
addNextIntentWithParentStack(finalIntent)
getPendingIntent(0, pendingIntentFlags)
}
val notification = NotificationCompat.Builder(context, type.channelId)
.setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setPriority(NotificationCompat.PRIORITY_MAX)
.setCategory(Notification.CATEGORY_SERVICE)
.setDefaults(Notification.DEFAULT_ALL)
.setAllowSystemGeneratedContextualActions(true)
.setOnlyAlertOnce(true)
.setAutoCancel(true)
.setLocalOnly(true)
.setOngoing(false)
.setSilent(false)
.setSmallIcon(R.drawable.icon_notification)
.setContentIntent(pendingIntent)
.build()
notificationManager?.notify(NOTIFICATION_ID, notification)