Android: как я могу поместить свое уведомление поверх области уведомлений?
Я пытаюсь поместить свое уведомление поверх области уведомлений.
Решение состоит в том, чтобы установить параметр "когда" для моего объекта уведомления с будущим временем, например:
notification.when = System.currentTimeMills()*2;
Код, который я использую в этом:
long timeNotification = System.currentTimeMillis()*2;
Notification notification = new Notification(statusIcon,c.getResources().getString(R.string.app_name),timeNotification);
notification.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
notification.when = timeNotification;
notification.priority = Notification.PRIORITY_MAX;
но некоторые приложения (например, Facebook) могут поместить простое уведомление с указанием текущего времени по сравнению с моим.
Если я обновлю свое уведомление, оно останется под этими.
Какие параметры я должен установить, чтобы поставить мой Notification
наверх области уведомлений?
4 ответа
Ты должен сделать это. Другие ответы кажутся устаревшими.
NotificationCompat.Builder mBuilder =
(NotificationCompat.Builder) new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.some_small_icon)
.setContentTitle("Title")
.setContentText("This is a test notification with MAX priority")
.setPriority(Notification.PRIORITY_MAX);
setPriority (Notification.PRIORITY_MAX) имеет важное значение. Это может также быть заменено любым из следующего согласно требованию.
Информация о различных уровнях приоритета:
PRIORITY_MAX - используйте для критических и срочных уведомлений, которые предупреждают пользователя о состоянии, которое является критическим по времени или должно быть решено, прежде чем он сможет продолжить выполнение определенной задачи.
PRIORITY_HIGH - Используйте в основном для важных коммуникаций, таких как сообщения или чаты с контентом, который особенно интересен для пользователя. Высокоприоритетные уведомления активируют отображение уведомлений.
PRIORITY_DEFAULT - Используйте для всех уведомлений, которые не попадают ни в один из других приоритетов, описанных здесь.
PRIORITY_LOW - используйте для уведомлений, о которых вы хотите, чтобы пользователь был проинформирован, но которые не являются срочными. Уведомления с низким приоритетом, как правило, отображаются внизу списка, что делает их хорошим выбором для таких вещей, как общедоступные или ненаправленные социальные обновления: пользователь попросил уведомить о них, но эти уведомления никогда не должны иметь приоритет над срочными или прямое общение.
PRIORITY_MIN - Используйте для контекстной или фоновой информации, такой как информация о погоде или контекстная информация о местоположении. Уведомления с минимальным приоритетом не отображаются в строке состояния. Пользователь обнаруживает их при расширении тени уведомлений.
Для получения дополнительной информации проверьте следующую ссылку: http://developer.android.com/design/patterns/notifications.html
Вы можете сделать свое уведомление Ongoing
, когда оно появится выше, чем другие обычные уведомления. Но в этом случае пользователь не сможет очистить его вручную.
Для этого установите флажки для вашего Notification
объект:
notif.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR
Попробуйте установить priority
уведомления к высокой
документация> Приоритет уведомления
Также проверьте этот вопрос, может ли он помочь вам прикрепить уведомление к верхней части области уведомлений
Обратите внимание, что если вы хотите "хедз-ап" уведомление, то есть то, которое отображается поверх верхней части текущего пользовательского окна, у вас должен быть следующий набор в вашем сборщике:
setDefaults(NotificationCompat.DEFAULT_VIBRATE)
Ссылка находится в javadoc:
На некоторых платформах вибрирующее уведомление с большей вероятностью будет представлено в виде предварительного уведомления.
Полный пример хедз-ап уведомления:
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.some_small_icon)
.setContentTitle("Title")
.setContentText("This is a test notification with MAX priority")
.setPriority(Notification.PRIORITY_MAX)
.setDefaults(NotificationCompat.DEFAULT_VIBRATE);