Как прикрепить уведомление всегда вверху панели уведомлений

Я пытаюсь исправить четыре кнопки всегда в верхней части панели уведомлений, которые не могут быть закрыты. Кнопки будут фиксироваться все время, когда приложение запускается впервые. Для этого я создаю уведомление через Notification Builder следующим образом.

 Notification notification = new Notification.Builder(this).build();      
       notification.flags = Notification.FLAG_ONGOING_EVENT;
       notification.icon = R.drawable.ic_launcher;
       notification.contentIntent = pendingIntent;
       notification.setSmallIcon = R.drawable.ic_launcher;
       notification.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
       notification.priority = Notification.PRIORITY_HIGH;
       mNotificationManager.notify(Constants.NOTIFICATION_ID_BRANDING, notification);

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

Линия notification.priority = Notification.PRIORITY_HIGH; делает вещь, но это специфично только для нашего приложения.

Мое требование: Но мое требование состоит в том, чтобы мое уведомление всегда было наверху, независимо от любого уведомления. Пожалуйста, помогите мне с вашими советами и решениями. Заранее спасибо.

2 ответа

Я пытаюсь исправить четыре кнопки всегда в верхней части панели уведомлений, которые не могут быть закрыты

Это не будет возможно, если вы не создадите свой собственный ROM.

Во-первых, Android, а не вы, определяет порядок элементов в панели уведомлений.

Во-вторых, в Android 5.0+ пользователь может блокировать уведомления, тем самым предотвращая отображение в вашем приложении чего-либо, не говоря уже о чем-то сверху.

В-третьих, если 2+ программиста пытаются реализовать одно и то же "требование", нужно проиграть, потому что есть только один самый верхний элемент. Следовательно, даже если бы ваши подходы работали, они, возможно, потерпели бы неудачу перед лицом другого разработчика, пытающегося сделать то же самое.

Кроме того, даже если вы придумали какой-нибудь подход "скрипт-детишка", который, кажется, работает, он может не работать на других устройствах, поскольку правила заказа уведомлений могут зависеть от устройства и версии ОС.

в то время как я получаю другое уведомление от другого приложения, мое уведомление отображается под этим приложением

Это потому, что Android, а не вы, контролирует порядок уведомлений.

Строка messages.priority = Notification.PRIORITY_HIGH; делает вещь, но это специфично только для нашего приложения.

Точнее, это всего лишь один критерий для заказа. Android может использовать другие критерии (например, время, системное приложение по сравнению с обычным приложением, постоянное или регулярное, приоритетное обслуживание или обычное), чтобы решить, в каком порядке он будет использоваться.

Кажется, то, что вы ищете, - это сервис переднего плана. Проверьте http://developer.android.com/reference/android/app/Service.html, android.app.Notification)