繁体   English   中英

NotificationCompat.Builder setLargeIcon() 不起作用?

[英]NotificationCompat.Builder setLargeIcon() not working?

当我添加代码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());

我试图以不同的方式加载位图,但它一直失败......图标是 128x128 所以它的大小应该不是问题?

我也尝试过不同的 ID,但没有一个能解决问题。

我会非常乐意提供任何建议,请在正确方向上的任何推动对我来说都意味着世界。

编辑 1#

该通知是从服务发出的。 该服务处于活动状态,并且日志打印告诉我运行“startForeground()”之后的代码。

您必须先设置大图标,然后再设置小图标。

在我的情况下,此代码正在运行:

    mBuilder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_message));
    mBuilder.setSmallIcon(R.mipmap.ic_message);
    mBuilder.setContentTitle("Inbox");
    mBuilder.setContentText("New message received");

在 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)
                ;

}

同样,您可以使用:

.setLargeIcon(Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.icon128), 128, 128, false))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM