2013-08-04 2 views
2

В службе, расширяющей новый (SDK18, JB-4.3) NotificationListenerService, я хотел бы получить значок строки состояния уведомлений.NotificationListenerService получает значок уведомления?

mStatusBarNotification.getNotification().icon возвращает идентификатор ресурса строки состояния, пригодный для вывода, но этот идентификатор ресурса, естественно, не входит в область/ресурсы моего приложения. Также есть mStatusBarNotification.getNotification().largeIcon (возврат Bitmap), но это не установлено для всех уведомлений и возвращает «неправильный» значок (изображение в расширенном ящике уведомлений).

ответ

4

Используйте getPackageName() по адресу StatusBarNotification, чтобы узнать о приложении, которое разместило Notification. Затем вы можете получить use createPackageContext(), чтобы получить Context для этого пакета, затем используйте это Context для извлечения изображения (например, через getResources()).

+0

Это прекрасно работает, спасибо, Марк! – Nick

+0

Как это работает? setSmallIcon по-прежнему требует идентификатор ресурса int, а использование createPackageContext и getResources просто дает мне доступ к самому Drawable. –

+0

@KyleJahnke: Я не знаю метода 'setSmallIcon()', который имеет какое-либо отношение к этому вопросу. Возможно, вы хотите создать «Уведомление»; этот вопрос касается не создания «Уведомления», а изучения существующего. – CommonsWare

Смежные вопросы