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
в верхней части области уведомлений?
Ответы
Ответ 1
Вы должны это сделать. Другие ответы кажутся устаревшими.
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#correctly_set_and_manage_notification_priority
Ответ 2
Вы можете сделать свое уведомление Ongoing
, когда оно появится выше обычного обычного уведомления. Но в этом случае пользователь не сможет очистить его вручную.
Чтобы сделать это, установите флаги для вашего объекта Notification
:
notif.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR
Ответ 3
Попробуйте установить priority
уведомления на высокий
документация > Приоритет уведомлений
Также проверьте этот вопрос, может ли он помочь вам Уведомление о контакте в верхней части области уведомлений
Ответ 4
Обратите внимание, что если вы хотите получить уведомление "хедз-ап", то есть отображающее верхнюю часть текущего окна пользователя, вы должны иметь следующий набор в своем построителе:
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);