PeriodicRequest не работает. Я пробовал отправлять уведомления каждые 15 минут, но это не работает - PullRequest
0 голосов
/ 20 июня 2020

Итак, я использовал PeriodicRequest, чтобы отправлять мне уведомление каждые 15 минут, но оно не появляется вообще. Когда я убиваю приложение, возможность принудительного закрытия отключается. Разве это не значит, что фоновые прецессы не работают? Это причина того, что мое уведомление не появляется?

    PeriodicWorkRequest periodicWorkRequest = new PeriodicWorkRequest.Builder((BackgroundWork.class),
            15, TimeUnit.MINUTES).build();
    WorkManager.getInstance(this).enqueue(periodicWorkRequest);

Код ниже взят из класса BackgroundWork.

    public Result doWork() {
    NotificationCompat.Builder alertNotify = new 
    NotificationCompat.Builder(context1,"101")
            .setContentTitle("Test")
            .setContentText("Test notif")
            .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            .setSmallIcon(R.drawable.virus)
            .setVisibility(NotificationCompat.VISIBILITY_PRIVATE)
            .setAutoCancel(true); //removes notification when user clicks

    NotificationManagerCompat notificationManager = 
    NotificationManagerCompat.from(context1);
    notificationManager.notify(28,alertNotify.build());
    DataParser download = new DataParser(context);
    download.execute("https://api.covid19api.com/summary");
    return Result.success();

1 Ответ

0 голосов
/ 20 июня 2020

Похоже, вы не настроили канал уведомлений, на который пытаетесь добавить уведомление. В качестве теста вы можете добавить этот код перед настройкой NotificationCompat.Builder?

//Kotlin
val notificationManager = NotificationManagerCompat.from(context)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    notificationManager.createNotificationChannel(NotificationChannel("101", "Test", NotificationManager.IMPORTANCE_DEFAULT))
}

//Java
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context1);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    notificationManager.createNotificationChannel(new NotificationChannel("101", "Test", NotificationManager.IMPORTANCE_DEFAULT));
}

Уведомление должно быть назначено каналам в Android 8.0 (уровень API 26). См. Документацию NotificationChannel, найденную здесь

Это, скорее всего, причина, по которой уведомление не отображается на вашем устройстве, однако Worker определенно все еще работает. Вы можете увидеть некоторые журналы того, что ваши рабочие сделали, как в выводе отладки, так и в Logcat windows. Некоторые примеры моих собственных тестов можно увидеть ниже:

//Debug log
I/WM-WorkerWrapper: Worker result SUCCESS for Work [ id=aa30d1f6-8683-43b8-bf6d-67e7b38a6d75, tags={ com.test.stackoverflowtest.BackgroundWork } ]

//Logcat
2020-06-20 15:02:23.743 4827-4899/com.test.stackoverflowtest I/WM-WorkerWrapper: Worker result SUCCESS for Work [ id=aa30d1f6-8683-43b8-bf6d-67e7b38a6d75, tags={ com.test.stackoverflowtest.BackgroundWork } ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...