Android: нет значка для уведомления
Я хотел создать уведомление без значка в строке состояния (состояние, которое не было расширено). Я попробовал пользовательское расширенное представление и установил значок только для этого представления. Но это не сработало. Когда я указываю 0 в качестве значка для конструктора, значок исчезает, но уведомление также не появляется в расширенном представлении.
Уведомление о уведомлении = новое уведомление (0, "", 0);
Я пробовал много комбинаций, но не получал решения. Кстати, я знаю, что он работает, потому что я видел эту функцию в некоторых приложениях. Спасибо.
Ответы
Ответ 1
QuickSettings сделал это, и когда я посмотрел на этот код, я увидел, что он использует конструктор по умолчанию Notification и выталкивает его значок справа от панели уведомлений. Я думаю, что он по-прежнему использует пространство, но не имеет иконки.
Некоторые коды:
notification = new Notification();
notification.flags |= Notification.FLAG_ONGOING_EVENT;
notification.flags |= Notification.FLAG_NO_CLEAR;
long hiddenTime = Constants.SDK_VERSION >= 9 ? -Long.MAX_VALUE : Long.MAX_VALUE;
notification.when = visible ? System.currentTimeMillis() : hiddenTime; // align
// left (0) / right (max) in status bar
edit: о, жаль, что я пропустил важную строку кода, на самом деле он использует местозаполнитель. Но теперь у вас есть код: -)
notification.icon = visible ? (status == Constants.STATUS_BLACK_ICON ?
R.drawable.ic_logo_black : R.drawable.ic_logo_white)
: R.drawable.ic_placeholder;
http://code.google.com/p/quick-settings/source/browse/trunk/quick-settings/src/com/bwx/bequick/receivers/StatusBarIntegrationReceiver.java
Ответ 2
Теперь это возможно в Android 4.1; эталонная реализация строки состояния Jelly Bean будет подавлять значки для уведомлений PRIORITY_MIN, хотя их содержимое будет отображаться на панели уведомлений.
Ответ 3
Вы можете использовать прозрачные изображения в качестве значка уведомления. но, как уже упоминалось, пользователь не будет уведомлять о появлении нового уведомления
Ответ 4
Здесь что-то экспериментировать. Введите уведомление дважды, один раз с помощью значка = 0 и один раз с реальным значком. Попробуйте в одном порядке, а затем в обратном порядке.
Я получил эффект отсутствия уведомления в строке состояния и уведомления в расширенном списке, когда я сделал что-то вроде этого, за исключением того, что один из двух (тот, у которого есть значок = 0) был установлен Service.startForeground(). У меня нет времени экспериментировать больше сейчас.