Кнопки действий уведомлений Android не работают, когда приложение убито - PullRequest
0 голосов
/ 17 октября 2019

Я создаю свое первое приложение для Android, это словарный запас. Я пытаюсь отправлять уведомления каждый час (используя PeriodicWorkRequest - WorkManager). Я заметил, что когда приложение убивается, уведомление продолжает срабатывать, но кнопки действий не работают.

Это мой метод отправки уведомления в моем классе Worker:

public void sendNot(Word word, int wordNum) {
            Intent activityIntent = new Intent(getApplicationContext(), WordStatsActivity.class);
            activityIntent.putExtra("word_exists", word);
            PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext()
                    , 0, activityIntent, PendingIntent.FLAG_UPDATE_CURRENT);

            Intent knewBroad = new Intent(getApplicationContext(), MainActivity.NotificationBroadcast.class);
            knewBroad.setAction(KNEW_WORD);
            knewBroad.putExtra("word", word);
            PendingIntent knewIntent = PendingIntent.getBroadcast(getApplicationContext(),
                    0, knewBroad, PendingIntent.FLAG_UPDATE_CURRENT);

            Intent didntKnowBroad = new Intent(getApplicationContext(), MainActivity.NotificationBroadcast.class);
            didntKnowBroad.setAction(DIDNT_KNOW_WORD);
            didntKnowBroad.putExtra("word", word);
            PendingIntent didntKnow = PendingIntent.getBroadcast(getApplicationContext(),
                    0, didntKnowBroad, PendingIntent.FLAG_UPDATE_CURRENT);

            Intent stopShowBroad = new Intent(getApplicationContext(), MainActivity.NotificationBroadcast.class);
            stopShowBroad.setAction(NOTIFCATION_OFF);
            stopShowBroad.putExtra("word", word);
            PendingIntent stopShowIntent = PendingIntent.getBroadcast(getApplicationContext(),
                    0, stopShowBroad, PendingIntent.FLAG_UPDATE_CURRENT);


            Notification notification = new NotificationCompat.Builder(getApplicationContext(), CHANNEL_1_ID)
                    ...
                    .addAction(R.mipmap.ic_launcher, "know", knewIntent)
                    .addAction(R.mipmap.ic_launcher, "don't know", didntKnow)
                    .addAction(R.mipmap.ic_launcher, "don't show again", stopShowIntent)
                    ...
                    .build();
            notificationManager.notify(word.getId(), notification);
        }

Letя знаю, если вам нужно больше информации

1 Ответ

0 голосов
/ 17 октября 2019

Убедитесь, что в вашем пуш-уведомлении ключ уведомления не должен присутствовать. В теле полезной нагрузки будет присутствовать только ключ данных.

Не использовать это (Образец)

{
    "to": "a6345d0278adc55d3474f5",
    "data": {
        "message": "Hello World!"
    },
    "notification": {
        "body": "Hello World \u270c",
        "badge": 1,
        "sound": "ping.aiff"
    }
}

Вместо этого используйте это (Образец):

{
    "to": "a6345d0278adc55d3474f5",
    "data": {
        "message": "Hello World!"
    }
}
...