проблема с уведомлением о намерении андроида

У меня есть тревога, которая происходит в моем приложении, и она запускает уведомление, которое затем при нажатии запускает действие. Проблема в том, что когда я создаю более одного аварийного сигнала, тогда активность, запущенная из уведомления, получает те же дополнительные функции, что и первая. Я думаю, что проблема заключается либо в намерении, которое я ставил в ожидании намерения или в самом ожидающем намерениях. Я думаю, мне, возможно, понадобится поставить флаг на одном из них, но я не знаю, какой из них.

Intent showIntent =new Intent(context, notificationreceiver.class); showIntent.putExtra("details", alarmname); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, showIntent, 0); notification.setLatestEventInfo(context, "The event is imminent", alarmname, contentIntent); 

И получатель уведомления

 Bundle b = getIntent().getExtras(); String eventname = b.getString("details"); details.setText(eventname); 

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

4 Solutions collect form web for “проблема с уведомлением о намерении андроида”

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

Верный.

Как я могу заставить его начать правильные намерения?

Это зависит от того, будет ли у вас два будильника, которые будут зарегистрированы сразу, или нет.

Если нет, вы можете использовать FLAG_ONE_SHOT или один из других флагов PendingIntent чтобы ваш второй PendingIntent использовал новые дополнительные функции.

Если, однако, у вас будет зарегистрировано сразу два сигнала тревоги, с различными дополнительными дополнениями, вам нужно будет сделать два Intent более существенными, так что filterEquals() возвращает false при сравнении двух. Например, вы можете вызвать setData() или setAction() и предоставить разные значения для каждого Intent .

Как я решил эту проблему, назначив уникальный RequestCode, когда вы получаете PendingIntent:

 PendingIntent.getActivity(context, requestCode, showIntent, 0); 

Поступая таким образом, вы регистрируетесь в системе разных / уникальных экземпляров намерений. Совет. Хорошим способом сделать requestCode уникальным является переход к текущему системному времени.

 int requestID = (int) System.currentTimeMillis(); 

другое решение:

используйте PendingIntent.FLAG_UPDATE_CURRENT следующим образом:

 PendingIntent contentIntent = PendingIntent.getActivity(this, 0,i, PendingIntent.FLAG_UPDATE_CURRENT); 

это сработало для меня

У меня была эта проблема в моем приложении, и я просто создал случайное число, чтобы переопределить намерения уведомлений:

 int random= new Random().nextInt(); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent( random, PendingIntent.FLAG_UPDATE_CURRENT ); 
  • Android: Как создать уведомление «Ongoing»?
  • Давайте будем гением компьютера.