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);
Другие вопросы по тегам