2011-01-21 1 views
5

У меня есть андроид APP, с большим количеством действий.Можно изменить значок значка состояния (значок уведомления) динамически?

В активизации моего приложения я запускаю значок уведомления в строке состояния, и он фиксируется там, пока мое приложение не остановится. Хорошо, это работает.

Но теперь мне нужна еще одна вещь, мне нужно изменить изображение динамически, программно, с помощью сервиса моего приложения. Как мне это сделать?

Как я могу получить доступ к значку уведомления моего приложения, а затем изменить значок?

Буду признателен за примеры кода, чтобы проиллюстрировать, как достичь этого.

ответ

8

Просто позвоните notify() еще раз на NotificationManager с новым Notification, но тот же уникальный идентификатор, что и для первого. Он заменит ваш значок существующего Notification (или отобразит новый Notification, если пользователь очистит первый).

+0

это не работает, им это делать, но панель уведомлений не обновляется tes, он по-прежнему показывает один и тот же текст и значок: S – NullPointerException

+0

@ AndroidUser99: ОК, затем отмените() оригинальное уведомление и поднимите новый. – CommonsWare

+0

как я могу отменить оригинальное уведомление об этой услуге? – NullPointerException

7

Вы можете использовать iconLevel на уведомлении: http://developer.android.com/guide/topics/ui/notifiers/notifications.html#More

Создайте файл XML в разрешении/рисую/myicon.xml с разным уровнем (другой значок) http://developer.android.com/reference/android/graphics/drawable/LevelListDrawable.html

<level-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:maxLevel="0" android:drawable="@drawable/ic_wifi_signal_1" /> 
    <item android:maxLevel="1" android:drawable="@drawable/ic_wifi_signal_2" /> 
    <item android:maxLevel="2" android:drawable="@drawable/ic_wifi_signal_3" /> 
</level-list> 

и установить или (обновить) уровень с:

Notification mNotification = new Notification(icon, tickerText, when); 
mNotification.iconLevel = 1; 
mNoticationManager.notify(NOTIFICATION_ID, mNotification); 
+0

Это действительно более полный и, возможно, «более правильный» ответ, чем принятый, и то, что я использовал и проверил для работы. – Josh

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

  • Нет связанных вопросов^_^