0

Я разрабатываю приложение для Android. В моем приложении я показываю уведомление, которое вызывается изнутри широковещательного приемника. Отображение уведомления от получателя работает нормально. Но у меня есть небольшая проблема с тем, что я хочу. Это уведомление об автоматическом отмене. Пользователь не может быть закрыт. Что происходит сейчас, когда оно запущено, оно не добавляется как новое уведомление в панели уведомлений, если оно уже существует. Только существующий показывается. Я хочу, чтобы я добавлял его при каждом выпуске, независимо от того, сколько уведомлений сделано из этого диспетчера уведомлений внутри получателя. См. Мой сценарий ниже.Как показать уведомление, которое добавляется как новое каждый раз, когда он уволен из приемника вещания в Android

Это мой приемник, который срабатывает самостоятельно близко уведомление

public class GalleryImageUploadReceiver extends BroadcastReceiver { 

    private Context context; 
    private NotificationCompat.Builder notification; 
    private static final int NOTIFICATION_ID = 1; 
    private NotificationManager nm; 

    @Override 
    public void onReceive(Context pContext, Intent intent) { 
     this.context = pContext; 
     initialize(intent); 
     showProcessNotification(); 
     uploadImagesToServer(); 
    } 

    private void initialize(Intent intent) 
    { 
     //initialize data 
    } 

    private void uploadImagesToServer() 
    { 
     // do async task and close itself 
     if(nm!=null) 
     { 
      nm.cancel(NOTIFICATION_ID); 
     } 
    } 

    public void showProcessNotification() 
    { 
     try{ 

      notification = new NotificationCompat.Builder(context); 
      notification.setAutoCancel(true); 
      notification.setSmallIcon(R.mipmap.ic_launcher); 
      notification.setWhen(System.currentTimeMillis()); 
      notification.setTicker("Uploading image(s)..."); 
      notification.setContentTitle(context.getResources().getString(R.string.app_name)); 
      notification.setContentTitle("Uploading image(s)..."); 
      notification.setAutoCancel(true); 
      notification.setOngoing(true); 
      notification.setDefaults(Notification.FLAG_ONGOING_EVENT); 
      nm = (NotificationManager)context.getApplicationContext().getSystemService(context.getApplicationContext().NOTIFICATION_SERVICE); 
      nm.notify(NOTIFICATION_ID,notification.build()); 
     } 
     catch (Exception e) 
     { 

     } 


    } 


    public void uploadImages(Context context,Intent intent) 
    { 
     onReceive(context,intent); 
    } 
} 

Это, как я стреляя уведомление с помощью приемника в деятельности

//inside a click listener 
GalleryImageUploadReceiver receiver = new GalleryImageUploadReceiver(); 
receiver.uploadImages(getBaseContext(),intent); 

Проблема с этим кодом является, когда я нажимаю кнопку , новое уведомление отменяет существующий, и на экране отображается только одно уведомление. Неважно, сколько раз я нажимаю на него. Например, если уведомление длится 5 секунд, когда я снова нажимаю кнопку через 2 секунды после первого запуска, то существующий будет длиться 7 секунд. Новый не добавляется в панель уведомлений. Как я могу заставить его добавлять новые, всякий раз, когда нажимается кнопка.

ответ

1

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

+0

Большое спасибо. Отлично. –