В настоящее время у меня есть уведомление, которое отображается на панели уведомлений, и когда пользователь щелкает его, оно должно привести их к корневой активности моего приложения.
Я использовал android:finishOnTaskLaunch ="true" и android:clearTaskOnLaunch="true" в своем манифесте, чтобы добиться этого, когда пользователь нажимает значок приложения на экране приложений или на главном экране. Пользователь всегда попадает в корневую активность, как и ожидалось.
Однако, когда я использую следующий код из моего уведомления, пользователь попадает на последний экран, на котором он был, а не на корневую активность, которая является StartActivity.
Кто-нибудь знает, что я делаю неправильно?
Intent notificationIntent = new Intent(this, StartActivity.class);
contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(getApplicationContext(), getString(R.string.notification_app_name), notificationText, contentIntent);
mNotificationManager.notify(1, notification);
Добавление этих флагов помогает, однако после перезагрузки все равно не работает:
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Когда я перезапускаю свое приложение, я запускаю службу, которая выводит уведомление, и когда я это делаю, уведомление возвращается к старому нежелательному поведению.
РЕШЕНО:
Решил проблему, добавив этот флаг в contentIntent моего уведомления - Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.
Вот ссылка с отличной информацией по группе разработчиков Google.