Уведомление не видно или не приходит

Я пытаюсь начать startForegroundService() в андроид O и выше устройства.

И сервис начался. в onCreate() метод обслуживания, я добавил startForeground() с уведомлением.

Но уведомление не приходит. Я не могу видеть это.

Мой код в onCreate() способ обслуживания:

  Notification.Builder builder = new Notification.Builder(this, "1")
          .setContentTitle(getString(R.string.app_name))
          .setContentText("in app filling")
          .setAutoCancel(true);

  Notification notification = builder.build();
  startForeground(1, notification);

3 ответа

Решение:

Шаг 1: Создать NotificationChannel

NotificationChannel notificationChannel = new NotificationChannel(channel_id , channel_name, NotificationManager.IMPORTANCE_HIGH);
            notificationChannel.enableLights(true);
            notificationChannel.enableVibration(true);
            notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});

Здесь channel_id и channel_name int а также string переменные соответственно.

Шаг 2: прикрепите его к NotificationManager:

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

Шаг 3: Создайте свое уведомление:

NotificationCompat.Builder notification = new NotificationCompat.Builder(this, "channel_id")
                        .setContentTitle("Test Title")
                        .setContentText("Test Message")
                        .setSmallIcon(R.mipmap.ic_launcher);

Шаг 4: прикрепить уведомление в том же NotificationManager объект

notificationManager.notify(1, notification.build());

Наконец, установите флажок, чтобы уведомить, если он выше Android O:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
    ....
}

Ссылки и подробнее об этом можно найти здесь

Надеюсь, поможет.

Начиная с версии Android Oreo, вы должны добавить канал в свое уведомление следующим образом:

private void createNotificationChannel() {
    // Create the NotificationChannel, but only on API 26+ because
    // the NotificationChannel class is new and not in the support library
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = getString(R.string.channel_name);
        String description = getString(R.string.channel_description);
        int importance = NotificationManager.IMPORTANCE_DEFAULT;
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
        channel.setDescription(description);
        // Register the channel with the system; you can't change the importance
        // or other notification behaviors after this
        NotificationManager notificationManager = getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);
    }
}

и создайте объект для уведомления следующим образом:

Notification.Builder notification = new Notification.Builder(this, "CHANNEL_ID")

Начиная с Android O уведомления должны иметь NotificationChannel указано, иначе они не будут отображаться, и ошибка будет отображаться в журнале.

Вы можете прочитать больше о каналах уведомлений здесь и о сервисах переднего плана в Api 26+ здесь.

Другие вопросы по тегам