Intereting Posts
OnClick или onItemClick при приостановке результатов в "IllegalStateException: не удается выполнить это действие после onSaveInstanceState" Отключить инкрементную сборку для kapt Android Studio "вкладка дизайна" отсутствует Как настроить эмулятор Android для Kindle Fire? Должен ли я использовать модификацию с одним синглом? Примеры для режимов запуска Android Сырые сокеты на Android Конвертировать dip в px в Android Выпускает ли ОС Android Wakelock, если приложение или служба, содержащая его, будут убиты? Styling AutoCompleteTextView с AppCompat.EditText не работает Как переносить платные Android-приложения из одной учетной записи google в другую учетную запись google SharedPreferences.getInt () приводит к ClassCastException – почему? Есть ли способ программно прокрутить представление прокрутки к определенному тексту редактирования? Можно ли получить контактную информацию «Владелец» в Android? Как добавить элемент в ArrayAdapter Spinner's?

Новый PendingIntent обновляет текущее намерение

Я пытаюсь показать различные уведомления через некоторый промежуток времени, но что происходит, так это обновление текущего PendingIntent новым, в результате я получаю только одно уведомление, даже если я запускаю запросы 4-5 ожидающих запросов

При нажатии кнопки я делаю следующее:

  try{ adapter.OpenDB(); int id = adapter.getMaxId("reminder")+1; adapter.CloseDB(); Intent intent = new Intent(MilestonesActivity.this, AlarmReceiver.class); intent.putExtra("message", ""+editMsg.getText()+" "+editDate.getText()); intent.putExtra("id", id); PendingIntent pendingIntent = PendingIntent.getBroadcast(MilestonesActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); am.set(AlarmManager.RTC_WAKEUP, reminddate.getTimeInMillis(), pendingIntent); adapter.CloseDB(); }catch (Exception e) { // TODO: handle exception } 

AlarmReceiver.java

  @Override public void onReceive(Context context, Intent intent) { Intent i =new Intent(context, NotificationService.class); try{ int id = intent.getExtras().getInt("id"); i.putExtra("id", id); CharSequence message = intent.getExtras().getString("message"); i.putExtra("message", message); }catch (Exception e) { // TODO: handle exception } context.startService(i); } 

NotificationService.java

  public void show(Intent intent) { try{ NotificationManager nm; Log.e("recieve", "ok"); nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); CharSequence from = "Lawyer app Reminder"; CharSequence message = intent.getExtras().getString("message"); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(), PendingIntent.FLAG_ONE_SHOT);// also tried FLAG_UPDATE_CURRENT int id =intent.getExtras().getInt("id"); Log.e("I", ""+id); Notification notif = new Notification(R.drawable.message_active, "Lawyer app Reminder.", System.currentTimeMillis()); notif.defaults = Notification.DEFAULT_ALL; notif.flags = Notification.FLAG_AUTO_CANCEL; notif.setLatestEventInfo(this, from, message, contentIntent); nm.notify(id, notif); }catch (Exception e) { e.printStackTrace(); } 

Plaese помогите мне с этим .thanks заранее

Solutions Collecting From Web of "Новый PendingIntent обновляет текущее намерение"

Если значение id в nm.notify(id, notif); То это же сообщение будет перезаписано.

Поэтому вам нужно убедиться, что идентификатор отличается для разных уведомлений

я нашел это

Второй параметр конструктора pendingintent не должен быть таким же (что было 0 жестко закодировано)

Я изменил его на (int) System.currentTimeMillis (), чтобы он не был таким же 🙂

 Intent ni =new Intent(NotificationService.this,ModifyDatabaseService.class); ni.putExtra("id", ""+id); PendingIntent contentIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), ni, PendingIntent.FLAG_ONE_SHOT); 

В вашем случае, если второй PendingIntent «равен» предыдущему, он заменяет его.

PendingIntents равны, если все из них одно и то же:

  1. Код запроса (второй параметр передан фабричному методу)
  2. Все данные Intent (тип, uri, category..etc)

Итак, если вы не хотите, чтобы второй PendingIntent переопределял предыдущий, измените один из приведенных выше списков.