我有一个类扩展NotificationListenerService,如何在onNotificationPosted(StatusBarNotification sbn,RankingMap rankingMap)方法中获得一个大的通知图标?
要使用小图标:
public void onNotificationPosted(StatusBarNotification sbn, RankingMap rankingMap) {
extras = sbn.getNotification().extras;
smallIcon = extras.getInt(Notification.EXTRA_SMALL_ICON, 0);
...
}
并返回该包中drawable的id,但是如何获得一个大图标呢? 我试过这样的事情:
final Bitmap iconLarge = (Bitmap) extras.getParcelable(Notification.EXTRA_LARGE_ICON);
那个
final Bitmap iconLarge = sbn.getNotification().largeIcon;
它总是返回null,我的目标是API 21+
sbn.getNotification().getLargeIcon()
不起作用,只有23岁以上。 有什么帮助吗?
答案 0 :(得分:2)
根据Android文档,
getLargeIcon()方法仅在API级别23中添加。
这就是为什么当您尝试在Android Lollipop(API级别21)中访问它并且在Marshmallow(API级别23)的情况下正常工作时,API会返回null
答案 1 :(得分:0)
解决:
Bundle extras = sbn.getNotification().extras;
Bitmap bigIcon = (Bitmap) extras.get(Notification.EXTRA_LARGE_ICON);
答案 2 :(得分:0)
试试:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
(bundle["android.largeIcon"] as Icon).loadDrawable(baseContext).toBitmap()
} else {
bundle.get(Notification.EXTRA_LARGE_ICON) as Bitmap
}