每次从 Android 中的广播接收器触发时,如何显示添加为新通知的通知

How to show notification that is added as new each time it is fired from broadcast receiver in 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);
    } 
}

这就是我在 activity

中使用接收器发送通知的方式
//inside a click listener
GalleryImageUploadReceiver receiver = new GalleryImageUploadReceiver();
receiver.uploadImages(getBaseContext(),intent);

该代码的问题是,当我单击按钮时,新通知会覆盖现有通知,因此屏幕上只会显示一个通知。无论我点击多少次。例如,如果通知持续 5 秒,当我在第一次触发 2 秒后再次单击按钮时,现有的将持续 7 秒。通知栏中未附加新的。我怎样才能让它在点击按钮时作为新的添加。

为每个通知使用唯一的通知 ID。因为您正在使用常量 'NOTIFICATION_ID' 新通知会覆盖现有通知。