Уведомление отображается только один раз и больше не отображается после этого - PullRequest
0 голосов
/ 25 января 2019

У меня запланированный FirebaseJob, после его завершения он снова планирует себя в следующем окне ON_ANY_NETWORK. Он делает свою работу великолепно и, как и ожидалось. Из которого я звоню в службу, которая создает новое уведомление каждый раз с намерением ожидания. как:

Intent resultIntent = new Intent(this, MainActivity.class);
    resultIntent.putExtra("NotificationMessage", "NotificationMessage");
    //resultIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
    resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addParentStack(MainActivity.class);
    stackBuilder.addNextIntent(resultIntent);
    PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
            .setContentTitle("My App name")
            .setContentText("Content text")
            .setTicker("This is a ticker text")
            .setStyle(new NotificationCompat.BigTextStyle().bigText("This is a long text"))
            .setSmallIcon(R.mipmap.ic_launcher)
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setContentIntent(resultPendingIntent)
            .setAutoCancel(false)
            .setOngoing(true)
            .setColor(getResources().getColor(android.R.color.holo_red_dark));

    if (notificationManager != null)
    {
        notificationManager.notify(NOTIFICATION_ID, builder.build());
    }

Который показывает уведомление только в первый раз , как я и ожидал. Я не хочу, чтобы какой-либо пользователь проводил его, пока приложение снова не откроется. И как только приложение открывается из этого уведомления, я отменяю уведомление как:

int MY_NOTIFICATION_ID= 234;
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager;
mNotificationManager = (NotificationManager) getSystemService(ns);
mNotificationManager.cancel(MY_NOTIFICATION_ID);

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

1 Ответ

0 голосов
/ 25 января 2019

Это потому, что ваш MY_NOTIFICATION_ID всегда один и тот же.Например, вместо этого вы можете установить MY_NOTIFICATION_ID равным System.currentTimeMillis():

int MY_NOTIFICATION_ID= System.currentTimeMillis();
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager;
mNotificationManager = (NotificationManager) getSystemService(ns);
mNotificationManager.cancel(MY_NOTIFICATION_ID);
...