手柄推送后无法返回到之前的 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
我的处理程序推送通知:
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