#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
. После этого, даже если они изменят код позже, канал останется на уровне «Высокий: Сделать звук» и не будет установлен на «Срочный: сделать звук и появиться на экране», как это требуется. Документы на уровне важности
Код в вопросе в полном порядке и должен создать канал с уровнем «Срочно» при установке в первый раз. В любом случае, удаление приложения вручную, а затем установка его снова воссоздаст каналы, установив уровень, соответствующий тому, что указано в последнем коде.