2013-08-04 65 views
2

在擴展新功能(SDK18,JB-4.3)NotificationListenerService的服務中,我想要獲取通知的狀態欄圖標。NotificationListenerService獲取通知圖標?

mStatusBarNotification.getNotification().icon返回可繪製狀態欄的資源ID,但該資源ID自然不在我的應用程序的範圍/資源中。還有mStatusBarNotification.getNotification().largeIcon(返回Bitmap),但這不是爲所有通知設置的,並返回「錯誤」圖標(擴展通知抽屜中的圖像)。

回答

4

StatusBarNotification上使用getPackageName()可以找到發佈Notification的應用程序。然後您可以use createPackageContext()獲得該包的Context,然後使用該Context檢索圖像(例如,通過getResources())。

+0

這很好用,非常感謝你,馬克! – Nick

+0

這是如何工作的? setSmallIcon仍然需要一個int資源ID,並且使用createPackageContext和getResources讓我可以訪問Drawable本身。 –

+0

@KyleJahnke:我不知道有一個與這個問題有關的'setSmallIcon()'方法。也許你正在創建一個'Notification';這個問題不是關於創建一個'Notification',而是檢查一個現有的。 – CommonsWare