2015-09-14 2 views
1

Я использую следующий код для отображения уведомления. После отображения уведомления я перейду к активности, если я нажму на уведомления.Как обновить существующие уведомления в Android?

void Notify(String notificationTitle, String notificationMessage){ 
     NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     Notification notification = new Notification(R.drawable.noti, notificationTitle,System.currentTimeMillis()); 

     Intent notificationIntent = new Intent(this, SmsActivity.class); 

     notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
       | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

     PendingIntent intent = PendingIntent.getActivity(this, 0, 
       notificationIntent, 0); 

     notification.setLatestEventInfo(this, notificationTitle,notificationMessage, intent); 
     notification.flags |= Notification.FLAG_AUTO_CANCEL; 
     notificationManager.notify(0, notification); 
     } 

Теперь я хочу обновить текст уведомлений. Как я могу это сделать ?

+1

Я думаю, вам следует опубликовать другое уведомление с тем же идентификатором, после чего оно будет обновлено – Emil

ответ

2

Вы можете обновить текст уведомления, отправив другой текст в Notify(String notificationTitle, String notificationMessage) метода.

+0

Просьба подтвердить это;) – KishuDroid

+1

Можете ли вы объяснить дальше? Покажите код, если это возможно! (В моем случае мне нужно обновить ContentText нажатием кнопки - кнопка находится в уведомлении -) –

1

Вместо передачи 0 в качестве уведомления ID, отправить другой номер и вызвать еще одно уведомление с тем же ID. Существующий будет обновлен.

2

Вы можете попробовать это

//First time  
     NotificationCompat.Builder builder = new NotificationCompat.Builder(context) 
         .setContentText(context.getString(R.string.notif_text)) 
         .setContentTitle(title) 
         .setSmallIcon(R.drawable.ic_action_alarm_2) 
         .setAutoCancel(false) 
         .setOngoing(running) 
         .setOnlyAlertOnce(true) 
         .setContentIntent(
           PendingIntent.getActivity(context, 10, 
             new Intent(context, YourActivity.class)         
             .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP), 
           0) 
         ) 

      notificationManager.notify(id, builder.build()); 

    //Second time 

      builder.setContentTitle(title); 
      notificationManager.notify(id, builder.build()); 
+0

Каково значение id? –

+0

в вашем коде вы используете 0, так что используйте 0 ,, – Akshay

0

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

Поэтому я бы не рекомендовал использовать этот API вообще для обновления уведомлений.

Если вы используете его для этой цели, вы, вероятно, просто обмениваете одну ошибку на другую.

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