可以动态更改状态栏的图标(通知图标)吗?

时间:2011-01-21 11:57:35

标签: android notifications statusbar

我有一个Android APP,有很多活动。

在我的应用程序的登录活动中,我在状态栏中启动一个通知图标,并在那里修复,直到我的应用程序停止。好的,它有效。

但是现在我还需要一件事,我需要用我的应用程序的服务以编程方式动态地改变图标。我该怎么做?

如何访问我的应用的通知图标,然后更改图标?

我希望通过代码示例来说明如何实现这一目标。

2 个答案:

答案 0 :(得分:8)

只需使用新的notify()NotificationManager上再次呼叫Notification,但使用与第一个相同的唯一ID。它将替换现有Notification的图标(如果用户清除了第一个Notification,则显示新{{1}}。)

答案 1 :(得分:8)

您可以在通知上使用iconLevel: http://developer.android.com/guide/topics/ui/notifiers/notifications.html#More

在res / drawable / myicon.xml中创建一个具有不同级别(不同图标)的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);