Не работают уведомления на 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 шт):
Чтобы уведомления заработали на 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 может по-разному обрабатывать разные каналы.