NotificationListenerService获取通知图标?

问题描述 投票:2回答:2

在扩展新的(SDK18,JB-4.3)NotificationListenerService的服务中,我想获得Notification的状态栏图标。

mStatusBarNotification.getNotification().icon返回状态栏drawable的资源ID,但该资源ID自然不在我的应用程序的范围/资源范围内。还有mStatusBarNotification.getNotification().largeIcon(返回Bitmap),但没有为所有通知设置并返回“错误”图标(扩展通知抽屉中的图像)。

android notifications android-4.3-jelly-bean
2个回答
5
投票

getPackageName()上使用StatusBarNotification查找发布Notification的应用程序。然后你可以use createPackageContext()获得该包的Context,然后使用Context来检索图像(例如,通过getResources())。


0
投票

这是替代解决方法。

我们可以从qazxsw poi获取drawable,然后使用自定义视图在通知中显示这个drawable。

这是使用android.icon值获取Drawable的方法:

sbn.getNotification().extras.getInt("android.icon")

我的 RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.custom_push_notification); contentView.setImageViewResource(R.id.image, R.mipmap.ic_launcher); contentView.setTextViewText(R.id.title, notificationModel.getTitle()); contentView.setTextViewText(R.id.text, notificationModel.getBody()); try { //now get the context of other app and then get drawable from resoures Drawable drawable1 = context.createPackageContext(notificationModel.getPackageNmae(), CONTEXT_IGNORE_SECURITY).getDrawable(notificationModel.getIcon()); Bitmap bitmap = drawableToBitmap(drawable1); contentView.setImageViewBitmap(R.id.image, bitmap); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } 是:

notificationModel
© www.soinside.com 2019 - 2024. All rights reserved.