0

Я разрабатываю приложение для Android, и я также получаю уведомление GCM push, а идентификатор уведомления для каждого из них различен. Проблема заключается в том, что у меня есть n push-уведомлений и приложение не находится в фоновом режиме. Когда я нажимаю на уведомление в первый раз, он откроет действие. Затем я снова очистил экземпляр приложения от фона и нажал на другое push-уведомление, что он не откроет приложение.Android Push Notification Не открывать активность, если n количество уведомлений в панели уведомлений

 Intent intent = new Intent(this, MainActivity.class); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
    stackBuilder.addParentStack(MainActivity.class); 
    stackBuilder.addNextIntent(intent); 
    long[] vibrate = {0, 100, 200, 300}; 
    Uri notification = RingtoneManager 
      .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    PendingIntent contentIntent = stackBuilder.getPendingIntent(0, 
      PendingIntent.FLAG_UPDATE_CURRENT 
        | PendingIntent.FLAG_ONE_SHOT); 
    Bitmap largIcon = BitmapFactory.decodeResource(this.getResources(), 
      R.mipmap.ic_launcher); 
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
      this).setSmallIcon(R.mipmap.small_icon_notification) 
      .setContentTitle(getResources().getString(R.string.app_name)) 
      .setLargeIcon(largIcon) 
      .setSound(notification) 
      .setStyle(new NotificationCompat.BigTextStyle().bigText(msg)) 
      .setContentText(msg).  setSound(notification) 
      .setStyle((new NotificationCompat.BigTextStyle()).bigText(msg)) .setAutoCancel(true); 
    mBuilder.setVibrate(vibrate); 
    mBuilder.setContentIntent(contentIntent); 
    mNotificationManager.notify((int) System.currentTimeMillis(), mBuilder.build()); 
+0

Я не думаю, что вы должны отливать System.currentTimeMillis() в int. Вместо этого используйте генератор случайных чисел. –

+0

Я изменил идентификатор уведомления, как вы сказали. Но результат тот же – Divya

+0

Можете ли вы обновить код с вашими изменениями? –

ответ

1

В строке (ы)

PendingIntent contentIntent = stackBuilder.getPendingIntent(0, 
     PendingIntent.FLAG_UPDATE_CURRENT 
       | PendingIntent.FLAG_ONE_SHOT); 

вы всегда используете один и тот же код запроса для PendingIntent.

Все экземпляры PendingIntent с одинаковым кодом запроса (первый аргумент) и одинаковые намерения (возможно, даже это неважно, я еще не тестировал это) - это то же самое ожидающее намерения, вне зависимости от того, какие дополнительные услуги вы ставите перед намерением. Единственный способ сделать их разными - использовать разные коды запросов.

Особенно, если вы используете FLAG_ONE_SHOT, "Flag indicating that this PendingIntent can be used only once"

0

Я удалил PendingIntent.FLAG_ONE_SHOT и до пристальный код запроса на случайное число. Теперь он работает нормально.

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