Я нашел одно решение, оно может выглядеть утомленным, но оно работает.
1) Создайте пустышку. Это действие будет использоваться в качестве отправной точки для ожидающего намерения.
class DummyPendingIntentActivity:AppCompatActivity()
{
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
}
}
2) Сделано это логикой c в onCreate
из пустышки. В этом методе вы можете проверить, есть ли какие-либо действия в стеке и возобновить их, если это необходимо, или вы можете перезапустить свое приложение, запустив действие «запуска»
//Here we check if there any activities in stack
override fun onCreate(savedInstanceState: Bundle?)
{
if(isTaskRoot)
{
//No previous activity running will restart app
val intent = Intent(this,YourFirstLauncherAcitivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(intent)
}
else
{
//Has some previous activity so will finish to show it
finish()
}
}
3) Вызвать эту фиктивную начальную точку в любой ожидающей намерение, и вы возобновите свое приложение или перезапустите его при необходимости.
val intent = Intent(context,DummyPendingIntentActivity::class.java)
val pendingIntent = PendingIntent.getActivity(AppClass.getApp(), 777, intent, 0)
...
setContentIntent(pendingIntent)