手柄推送后无法返回到之前的 activity

Can't back to previous activity after handle push

我的处理程序推送通知:

class CustomFirebaseMessagingService : FirebaseMessagingService() {
    override fun onMessageReceived(remoteMessage: RemoteMessage?) {
//  some code handler
// show push notification and set tap handler
      PushNotificationService.showNotification(applicationContext, payloadData["title"]!!, payloadData["body"]!!)
}

这里显示推送

object PushNotificationService {
    val CHANNEL_ID = "channelId"
    val NOTIFICATON_ID = 1

    fun showNotification(context: Context, title: String, body: String) {
        val intent = Intent(context, InvitationDetailsActivity::class.java).apply {
        val pendingIntent: PendingIntent = PendingIntent.getActivity(
                context,
                0,
                intent,
                PendingIntent.FLAG_UPDATE_CURRENT)

        val builder = NotificationCompat.Builder(context, CHANNEL_ID)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(title)
                .setStyle(NotificationCompat.BigTextStyle().bigText(body))
                .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                .setContentIntent(pendingIntent)
                .setAutoCancel(true)

        with(NotificationManagerCompat.from(context), {
            this.notify(NOTIFICATON_ID, builder.build())
        })
    }

并且当服务器发送消息时,它会在通知区域显示成功。当我点击成功时,打开我的 activity InvitationDetailsActivity。 好的。但问题是以前的所有活动都删除了。当我返回按下 InvitationDetailsActivity 时,它退出了应用程序。 但是我需要去之前的 activity.

测试用例:

1. Start app
2. Open activity MyActivty1
3. Tap push
4. Open InvitationDetailsActivity
5. Press back
6. Open activity MyActivty1

要防止Notification清空返回栈中的所有activity,必须设置一个Special Activity PendingIntent。特殊的 activity 不需要返回堆栈。请在创建 PendingIntent.

时尝试以下代码
 val notifyIntent = Intent(this, InvitationDetailsActivity::class.java).apply {
    flags = Intent.FLAG_ACTIVITY_NEW_TASK or 
     Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val notifyPendingIntent = PendingIntent.getActivity(
        this, 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT
)

Manifest中,设置activity如下:-

<activity
    android:name=".InvitationDetailsActivity"
    android:launchMode="singleTask"
    android:taskAffinity=""
    android:excludeFromRecents="true">
</activity>

有关这方面的更多信息,请查看documentation