2013-09-14 3 views
0

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

private void sendNotification(String msg) { 
     mNotificationManager = (NotificationManager) 
       _context.getSystemService(Context.NOTIFICATION_SERVICE); 

     Notification notification = new Notification(R.drawable.menu_cartable, 
       "you have a new message", 
       System.currentTimeMillis()); 
     notification.flags = Notification.FLAG_AUTO_CANCEL; 
     notification.sound = RingtoneManager 
       .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

     Intent notificationIntent = new Intent(_context, ActCartable.class); 
     PendingIntent intent = PendingIntent.getActivity(_context, 0, 
        notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); 

     notification.setLatestEventInfo(_context, 
       "you have a new message", 
       msg, 
       intent); 

     mNotificationManager.notify(NOTIFICATION_ID, notification); 

    } 

enter image description here enter image description here

В Android 4.2 Когда сообщение получено впервые (панель уведомлений очищается), a большой значок (tickerText) отображается в панели уведомлений, а через несколько секунд он скрыт и уведомление отправляется в панель уведомлений. Если я не открываю это уведомление (панель уведомлений не очищается), а вторая полученная передача сообщений, большой значок не отображается снова, но устройство правильно воспроизводит звук и содержимое нового сообщения успешно обновляется в панели уведомлений, если пользователь открывает панель уведомлений.

Вы должны знать, что значок большой значок показан все время в android 3.x.

Как я могу показать эту большую иконку в android 4.x каждый раз, когда получено новое сообщение, а панель уведомлений не очищается?

ответ

1

Например, вы можете отменить старое уведомление и отобразить новый с другим идентификатором. Он будет выглядеть следующим образом:

mNotificationManager.cancel(notificationId); 
mNotificationManager.notify(notificationId++, notification); 

Обновление от @breceivemail:

Он работает правильно, если вы поставите ++ перед тем, как это notificationId:

mNotificationManager.cancel(notificationId); 
mNotificationManager.notify(++notificationId, notification); 

Спасибо,

+0

Да, вы правы, когда я его протестировал, я увеличил уведомление и отменил его. – Bracadabra

Смежные вопросы