2011-01-21 40 views
5

Tôi có một APP Android, với rất nhiều hoạt động.Có thể thay đổi biểu tượng của thanh trạng thái (biểu tượng thông báo) động không?

Trong hoạt động đăng nhập của ứng dụng, tôi bắt đầu biểu tượng thông báo trên thanh trạng thái và được sửa ở đó cho đến khi ứng dụng của tôi dừng. Ok, nó hoạt động.

Nhưng bây giờ tôi cần một điều nữa, tôi cần phải thay đổi biểu tượng động, theo chương trình, với dịch vụ của ứng dụng của tôi. Tôi làm nó như thế nào?

Tôi làm cách nào để truy cập vào biểu tượng thông báo của ứng dụng và sau đó thay đổi biểu tượng?

Tôi sẽ đánh giá cao các ví dụ về mã để minh họa cách đạt được điều này.

Trả lời

8

Chỉ cần gọi lại notify() lần nữa trên NotificationManager bằng Notification mới nhưng cùng một ID duy nhất như bạn đã sử dụng cho lần đầu tiên. Nó sẽ thay thế biểu tượng của bạn hiện có Notification (hoặc hiển thị Notification mới nếu người dùng đã xóa biểu tượng đầu tiên).

+0

nó không hoạt động, hãy thực hiện nhưng thanh thông báo không cập nhật tes, nó vẫn hiển thị cùng một văn bản và biểu tượng: S – NullPointerException

+0

@ AndroidUser99: OK, sau đó hủy() thông báo ban đầu và nâng cấp mới. – CommonsWare

+0

Tôi làm cách nào để hủy thông báo gốc trên dịch vụ đó? – NullPointerException

7

Bạn có thể sử dụng iconLevel trên Notification: http://developer.android.com/guide/topics/ui/notifiers/notifications.html#More

Tạo một file xml trong res/drawable/myicon.xml với mức độ khác nhau (biểu tượng khác nhau) 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> 

và thiết lập hoặc (cập nhật) cấp với:

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

Điều này thực sự là một hoàn chỉnh hơn, và cho là "chính xác hơn", câu trả lời hơn là chấp nhận, và những gì tôi đã sử dụng và xác minh để làm việc. – Josh

Các vấn đề liên quan