根据应用程序状态从通知启动活动



我正在尝试设置FirebaseMessagingService,并且正在为导航逻辑而苦苦挣扎。

当用户点击通知时,应启动not the main的活动。

我知道可以像这样自己开始一项活动

val pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT)

或者像这样的后退堆栈

val pendingIntent = TaskStackBuilder.create(this).run {
addNextIntentWithParentStack(intent)
getPendingIntent(0, PendingIntent.FLAG_ONE_SHOT)
}

第一种变体的问题在于,如果application is not running,那么当用户关闭意图活动时,整个应用程序都会关闭,因为它后面没有后备堆栈。

第二个变体的问题在于,如果app is runningcurrent activity is not the parent of the intent活动,那么当用户关闭意图活动时,他无法返回到前一个,因为它被新的反向堆栈所取代。

我需要的是:当用户关闭意图活动时,然后启动主活动,但前提是没有可用的反向堆栈。

知道如何解决这个导航问题吗?

为我自己的问题发布解决方法。

在启动主活动时设置一个标志,并在完成通知活动时检查它。

在主活动中

companion object {
var started: Boolean = false
}
override fun onCreate(savedInstanceState: Bundle?) {
started = true

在"通知"活动中

override fun onBackPressed() {
if (!MainActivity.started)
startActivity(Intent(this, MainActivity::class.java))
super.onBackPressed()
}

相关内容

  • 没有找到相关文章

最新更新