В настоящее время у меня есть уведомление, которое отображается в панели уведомлений, и когда пользователь щелкает по нему, оно должно приводить их в корневую папку Активность моего приложения.
Я использовал 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