TL; DR - переопределить onBackPressed () [Метод, вызываемый, когда пользователь нажимает кнопку «Назад»], и если пользователь пришел к активности из уведомления, затем запустите MainActivity с помощью намерения.
Насколько я понимаю, вы хотите перейти от действия 2 (давайте назовем это FromNotificationActivity) к действию 1 (назовем это MainActivity) только тогда, когда FromNotificationActivity запускается нажатием на уведомление, т.е.:
Уведомление о щелчках пользователя ---> FromNotificationActivity запускается ---> нажимается кнопка «Назад» и FromNotificationActivity уничтожается ---> Вместо возврата на домашний экран вы хотите запустить MainActivity.
Я считаю, что самый быстрый способ сделать это -переопределение onBackPressed () и переход непосредственно к MainActivity, только если FromNotificationActivity запускается из уведомления.
Итак, когда вы создаете уведомление, добавьте эту строку -
intent.putExtra("origin_from_notification", true);
Итак, ваш построитель уведомленийбудет выглядеть так -
Intent intent = new Intent(context, FromNotificationActivity.class);
intent.putExtra("origin_from_notification", true);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
// TODO: Replace with .Build() for api >= 16
Notification notification = new Notification.Builder(context)
.setContentTitle("Notification Title"
.setContentText("Notification text")
.setSmallIcon(R.drawable.icon)
.setContentIntent(pendingIntent)
.// Whatever more you want to add
Затем в своей функции FromNotificationActivity после onCreate () добавьте следующие строки -
@Override
public void onBackPressed() {
// Check if the user came here from a notification
if (getIntent().getBooleanExtra("origin_from_notification", true)) {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
} else {
// Do whatever you want, the user came here from another screen
}
}
И, опционально, если у вашей активности есть кнопка "Назад" в строке заголовка, используйте эту строку -
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
break;
}
}
Надеюсь, это поможет!