当我将代码mNotificationBuilder.setLargeIcon(BitmapFactory.decodeResource(
getResources(), R.drawable.ic_large_icon));
添加到我的通知中时,它会停止工作而不会出现错误或警告。这只发生在棒棒糖前,棒棒糖上,超出它的效果很好。随着"工作"我的意思是通知出现了。
我的示例代码:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.drawable.icon);
mBuilder.setContentTitle("Content Title");
mBuilder.setContentText("Content Text");
mBuilder.setLargeIcon(BitmapFactory.decodeResource( getResources(), R.drawable.ic_large_icon));
startForeground(1, mBuilder.build());
我试图以不同的方式加载Bitmap但它仍然失败... 图标是128x128,所以它的大小应该不是问题吗?
我也尝试了不同的ID,但没有一个可以解决问题。
如果有任何建议,我会非常感激,请朝正确的方向努力,对我来说意味着世界。
编辑1#
此通知是从服务发出的。该服务还活着,Log打印告诉我" startForeground()"之后的代码。跑了。
答案 0 :(得分:20)
您必须首先设置大图标,然后设置小图标。
在我的情况下,此代码正在运行:
mBuilder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_message));
mBuilder.setSmallIcon(R.mipmap.ic_message);
mBuilder.setContentTitle("Inbox");
mBuilder.setContentText("New message received");
答案 1 :(得分:3)
在Lolipop之前,没有大型通知图标。小图标应为64x64,在创建它时请记住它将以两种颜色呈现:白色和透明。
NotificationCompat.Builder mBuilder;
if (SystemTools.isAndroidApiVersionBeforeLollipop()) {
mBuilder =
new NotificationCompat.Builder(context)
.setContentIntent(pendingIntent)
.setSmallIcon(iconRid)
.setColor(ContextCompat.getColor(context, R.color.transparent))
.setContentTitle(caption)
.setContentText(text)
.setOngoing(true)
.setWhen(0)
.setPriority(NotificationCompat.PRIORITY_LOW)
;
} else {
mBuilder =
new NotificationCompat.Builder(context)
.setContentIntent(pendingIntent)
.setSmallIcon(iconRid)
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), bigIconRid))
.setColor(ContextCompat.getColor(context, R.color.transparent))
.setContentTitle(caption)
.setContentText(text)
.setOngoing(true)
.setWhen(0)
.setPriority(NotificationCompat.PRIORITY_LOW)
;
}
答案 2 :(得分:0)
您也可以使用:
.setLargeIcon(Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.icon128), 128, 128, false))