Не работают уведомления на Android 8 и выше

Я пытаюсь вывести самое простое тестовое уведомление в своем андроид приложении, но сталкиваюсь с тем что уведомление просто не выводится. Вот текст метода:

public void notification(View view) {
       Button button = findViewById(R.id.button6);
       button.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {

               NotificationCompat.Builder builder =
                       new NotificationCompat.Builder(MainActivity.this, "IDK")
                               .setSmallIcon(R.drawable.ic_baseline_notifications_active_24)
                               .setContentTitle("Напоминание")
                               .setContentText("Текст")
                               .setPriority(NotificationCompat.PRIORITY_DEFAULT);

               NotificationManagerCompat notificationManager =
                       NotificationManagerCompat.from(MainActivity.this);
               notificationManager.notify(101, builder.build());
           }
       });
   }

разбираясь я увидел что в классе NotificationCompat(androidx.core.app.NotificationCompat) присутствует объявление androidx.core.R (картинка 1) но такого класса там нет(зато есть в android.R). Из-за этого скорее всего и ошибка, но как это исправить?картинка 1


Ответы (1 шт):

Автор решения: Vadik

Чтобы уведомления заработали на API 26 (Android 8) и выше, необходимо зарегистрировать канал уведомлений.

Сначала придумайте какой-нибудь id и name для канала:

String id = "DEFAULT"
String name = "Все уведомления"

Зарегистрируйте новый канал при запуске приложения:

NotificationChannel channel = new NotificationChannel(id, name, IMPORTANCE_DEFAULT);
getSystemService(NotificationManager.class).createNotificationChannel(channel);

Теперь, чтобы показать пользователю уведомление, используйте id созданного канала:

new NotificationCompat.Builder(this, id)
    // далее ваш код из вопроса

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

→ Ссылка