Android - открыть или перезапустить приложение после нажатия push-уведомления с использованием действий флага

Я использую push-уведомления в Android. Когда я получаю push-уведомление, я хочу открыть приложение, если он все еще запущен, иначе он должен открыть новый экземпляр.

Я использую

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 
    Intent.FLAG_ACTIVITY_CLEAR_TOP | 
    Intent.FLAG_ACTIVITY_SINGLE_TOP | 
    Intent.FLAG_ACTIVITY_NEW_TASK);

Но когда я получаю push-уведомление сейчас, и я нажимаю на него, ничего не происходит.

Как я могу достичь этого, используя flagIntents?

Ответ 1

Вам нужно установить флаги Intent на Intent. Вы указали им в вызове, чтобы получить PendingIntent. Попробуйте следующее:

notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
    Intent.FLAG_ACTIVITY_SINGLE_TOP | 
    Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
    notificationIntent, 0);

Ответ 2

задайте следующие параметры в файле Android Mainfest

android:noHistory="true"
 android:launchMode = "singleTop"

Ответ 3

В моем случае работающее приложение перезапускалось каждый раз, когда я нажимал на push-уведомление. Но я не хочу перезапускать приложение.

В PendingIntent у меня есть намерение для необходимой Деятельности1, которая называется Деятельностью2. Ошибка была в этих строках:

val intent = Intent(context, Activity2::class.java)
// Remove this line:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
context.startActivity(intent)