Android - Уведомления PendingIntent переходят к неправильной активности?

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

Я использовал 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.


person Donal Rafferty    schedule 24.11.2011    source источник
comment
Не могли бы вы уточнить, как вы использовали: FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.   -  person Erik Grosskurth    schedule 11.07.2017


Ответы (1)


попробуйте эти 2 свойства

notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
person ud_an    schedule 24.11.2011
comment
Интересно, что это работает, когда я впервые запускаю приложение, однако у меня есть функция автозапуска, которая выводит уведомление, когда телефон перезагружается, и когда это включено и активировано (например, я перезапускаю и всплываю уведомление), уведомление возвращается к старое поведение, несмотря на запуск точно такого же кода при автоматическом запуске. - person Donal Rafferty; 24.11.2011
comment
Когда вы перезагружаете телефон, ваше приложение показывает уведомление, и, щелкнув его, вы должны перейти к корневой активности, а не к какой-либо другой активности, подобной той, что происходит? - person ud_an; 24.11.2011
comment
Да, я решил проблему, добавив это в contentIntent моего уведомления - Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED - person Donal Rafferty; 25.11.2011