Уведомление Android не отображается в виде сообщения

#android #android-notifications

#Android #android-уведомления

Вопрос:

Само уведомление работает хорошо, но не так, как я хочу. Оно вибрирует и показывает определенный значок, но не как уведомление Watsapp, а в setCategory я поставил CATEGORY_MESSAGE , но все равно ничего!

в моем классе приложения я поместил :

 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID,CHANNEL_NAME,NotificationManager.IMPORTANCE_HIGH);
        channel.setDescription(CHANNEL_DESC);
        channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
        NotificationManager manager = getSystemService(NotificationManager.class);
        assert manager != null;
        manager.createNotificationChannel(channel);
    }
  

Фрагмент :

 private void T(String message){
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext(),CHANNEL_ID)
            .setContentText(message)
            .setContentTitle("Test")
            .setColor(0xff123456)
            .setSmallIcon(R.drawable.com_facebook_button_icon)
            .setCategory(CATEGORY_MESSAGE)
            .setPriority(PRIORITY_HIGH);
    NotificationManagerCompat compat = NotificationManagerCompat.from(getApplicationContext());
    compat.notify(1,mBuilder.build());

}
  

Вот как я хочу, чтобы оно уведомляло :

введите описание изображения здесь

Вот как выполняется текущее уведомление

введите описание изображения здесь

Я использую SDK 27

Комментарии:

1. Пожалуйста, уточните, что вы подразумеваете под «не как уведомление Whatsapp». Если оно показывает желаемый значок и заголовок, возможно, вы имеете в виду такие действия, как «Ответить» и «Пометить как прочитанное»?

2. Оно не отображается, как любое другое уведомление, в верхней части экрана. Оно просто вибрирует и показывает значок

3. Вы хотите, чтобы оно отображалось поверх других приложений, как показано здесь, в разделе «Предупреждения»? developer.android.com/guide/topics/ui/notifiers / …

4. Да, но это работает только с api 21>. Я хочу что-то на NotificationManagerCompat уровне. Я смотрел учебник об этом, на его телефоне выскакивает, а на моем нет.

5. На каких уровнях API ваше уведомление показывает ожидаемое поведение, а где нет?

Ответ №1:

После обсуждения с OP в чате, вот мое лучшее объяснение о том, что могло произойти:

Канал уведомления может быть создан только один раз, после чего он становится неизменяемым для приложения. Пользователь может настроить его только через настройки. Если кто-то сначала следует примерам в официальных документах, он может создать канал с помощью IMPORTANCE_DEFAULT . После этого, даже если они изменят код позже, канал останется на уровне «Высокий: Сделать звук» и не будет установлен на «Срочный: сделать звук и появиться на экране», как это требуется. Документы на уровне важности


Код в вопросе в полном порядке и должен создать канал с уровнем «Срочно» при установке в первый раз. В любом случае, удаление приложения вручную, а затем установка его снова воссоздаст каналы, установив уровень, соответствующий тому, что указано в последнем коде.