2013-08-04 46 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