Не работает NotificationCompat.Builder

Рейтинг: -1Ответов: 1Опубликовано: 13.04.2023
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
        NotificationChannel notificationChannel = NotificationManagerCompat.getNotificationChannel("MyID");
        if (notificationChannel == null) {
            int importance = NotificationManager.IMPORTANCE_HIGH;
            notificationChannel = new NotificationChannel("MyID", "Имя канала", importance);
            notificationChannel.setLightColor(Color.GREEN);
            notificationChannel.enableVibration(false);
            NotificationManagerCompat.createNotificationChannel(notificationChannel);
        }
    }

    new NotificationCompat.Builder(this, "MyID")
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("My notification")
            .setContentText("Hello World!")
            .build();

Делал все как и в этом вопросе, но ничего не работает, а "createNotificationChannel" подсвечивает как ошибку.

Ответы

▲ 0Принят

Попробуйте использовать просто NotificationManager:

val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager

или на джаве:

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

также хочу уточнить что вы пытаетесь использовать не экземпляр класса NotificationManagerCompat. То есть вам нужно предварительно создать его перед использованием, а вы даже не вызываете конструктор:

private NotificationManagerCompat(Context context) {
        mContext = context;
        mNotificationManager = (NotificationManager) mContext.getSystemService(
                Context.NOTIFICATION_SERVICE);
    }

поэтому и не вызывается ничего. Сделайте так:

NotificationManagerCompat manager = NotificationManagerCompat.from(someContext);

и дальше уже вызывайте метод:

   public void createNotificationChannel(@NonNull NotificationChannel channel) {
        if (Build.VERSION.SDK_INT >= 26) {
            mNotificationManager.createNotificationChannel(channel);
        }
    }

Вот документация по NotificationManagerCompat.