Ситуация
Пользователь получает интерактивное уведомление от моего приложения.Если щелкнуть его, оно запустит приложение и перенаправит пользователя на определенный фрагмент в зависимости от данных, с которыми он поставляется.Это работает очень хорошо, пока приложение работает.
Работает на Android 7
Проблема
Если приложение не запущено и затем запускается с помощью уведомления, запуска иредирект работает просто отлично.Но если другое уведомление получено во время работы приложения, оно больше не работает.Единственная функция, которую обеспечивает уведомление, - закрывать ящик уведомлений.Он даже не исчезает после щелчка, как это должно быть.OnCreate или onResume Activity, определенные в Intent, также не вызываются.Кажется, он просто игнорирует все свои настройки и закрывает навигационную панель после нажатия
Код уведомления
private void showNotification(String message, PushEntity.ActionEnum actionEnum, Map<String, String> params) {
NotificationManager mNotificationManager = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE);
Intent startIntent = new Intent(getApplicationContext(), MainActivity.class);
if (params != null) {
for (Map.Entry<String, String> entry : params.entrySet()) {
startIntent.putExtra(entry.getKey(), entry.getValue());
}
}
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, startIntent, PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_default_notification)
.setContentTitle(getResources().getString(R.string.app_name))
.setStyle(new NotificationCompat.BigTextStyle().bigText(message))
.setContentText(message)
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_MAX);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(pushNotificationId, mBuilder.build());
Что я пытался до сих пор
- Добавление
android:exported="true"
записи MainActivity в мой AndroidManifest.xml - Добавление флага
PendingIntent.FLAG_UPDATE_CURRENT
вместо и дополнительно к FLAG_ONE_SHOT
Вопрос
Может кто-нибудь объяснить мне, почему это происходит только после того, как приложение было запущено по уведомлению, но не когда оно уже запущено?
И у кого-нибудь есть идеи, как это может бытьисправлена?