Уведомление не видно или не приходит - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь запустить startForegroundService() в устройствах Android 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 ]

0 голосов
/ 31 октября 2018

Решение:

Step1: Создать 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) {
    ....
}

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

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

0 голосов
/ 31 октября 2018

Начиная с версии 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")
0 голосов
/ 31 октября 2018

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

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

...