TaskStackBuilder в PendingIntent не работает

Я пытаюсь воссоздать задний стек для действия при нажатии уведомления с помощью этого кода:

Intent firstIntent = new Intent(this, First.class);  
Intent secondIntent = new Intent(this, Second.class);    
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);

 stackBuilder.addNextIntent(firstIntent);
 stackBuilder.addNextIntent(secondIntent);
 PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
 Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

 NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                                    .setSmallIcon(R.mipmap.ic_launcher)
                                    .setContentTitle(fromName)
                                    .setContentText(message)
                                    .setAutoCancel(true)
                                    .setSound(defaultSoundUri)
                                    .setContentIntent(pendingIntent);

  NotificationManager notificationManager =
                                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

  notificationManager.notify(0 ,notificationBuilder.build());

но это не работает. Когда я нажимаю уведомление, открывается второе действие, но нажатие кнопки «Назад» завершает действие, пока я хочу вернуться к первому действию.

Установка parentActivityName в AndroidManifest не работает.

Что случилось?

Спасибо


person Matroska    schedule 18.07.2015    source источник
comment
Что такое minSdkVersion в вашем build.gradle?   -  person Prudhvi    schedule 24.09.2015


Ответы (1)


Попробуйте изменить

PendingIntent.FLAG_UPDATE_CURRENT

to

PendingIntent.FLAG_CANCEL_CURRENT
person Ganesh Mohan    schedule 20.10.2015
comment
Спасибо! Это сработало для меня. Не могли бы вы объяснить, почему это сработало? - person Saket Jain; 08.03.2016
comment
@SaketJain: Честно говоря, понятия не имею. Я столкнулся с той же проблемой и наткнулся на какой-то ответ SO (сейчас не могу его найти), в котором предлагалось использовать флаг FLAG_CANCEL_CURRENT вместо FLAG_UPDATE_CURRENT, который у меня работал нормально. Это скорее обходной путь, чем правильное решение, потому что на некоторые устройства Samsung, использующие флаг Lollipop FLAG_CANCEL_CURRENT, вызывают сбой. Я обновлю свой ответ, если когда-нибудь найду хорошее решение этой проблемы с правильным объяснением. - person Ganesh Mohan; 10.03.2016
comment
Спасибо. В настоящее время я реализовал его с помощью флага CANCEL, однако на самом деле я бы предпочел и лучший подход. Продолжаем искать :) - person Saket Jain; 10.03.2016
comment
я пробовал это, но на самом деле это не имело никакого значения для моего приложения в Android API 22, возможно, это имело значение для других парней. я настоятельно рекомендую проконсультироваться с официальными документами по этому вопросу, так как это помогло решить ту же проблему. - person kinsley kajiva; 13.11.2016
comment
@GaneshMohan Спасибо, это сработало. Просто хотел узнать, правильный ли это подход? - person Sai; 19.05.2018