[英]Firebase notification icon not shown on Android 5.0 and newer
[英]Android : Notification not sent & shown when Icon is changed
我正在开发一个Android项目,无论何时发生事件,我都会在其中发送通知。 不幸的是,当我将“通知”图标更改为我们的项目图标(这是一个8.4kb的图像)时,没有收到任何通知。 这是特别有问题的,因为不会引发任何错误,只会收到任何通知。
当我将图像更改为简单的红色正方形时,可以看到通知,但是通知甚至不是红色。 如何将通知图像正确设置为所需图像。 谢谢。
如您所见,第一个通知是图标不正确。
屏幕截图:
代码:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext());
mBuilder.setAutoCancel(true);
mBuilder.setSmallIcon(R.drawable.defaultimage);
mBuilder.setContentTitle(subject);
mBuilder.setContentText(Html.fromHtml(text));
if (type.equals("note")) {
Log.d("type","note");
Intent resultIntent = new Intent(getApplication(), EditNoteActivity.class);
resultIntent.putExtra("groupid", Long.valueOf(channelName));
resultIntent.putExtra("canvasid", Integer.valueOf(canvasId));
resultIntent.putExtra("sectionid", Integer.valueOf(sectionId));
resultIntent.putExtra("noteid", Integer.valueOf(noteId));
TaskStackBuilder stackBuilder = TaskStackBuilder.create(getApplicationContext());
stackBuilder.addParentStack(EditNoteActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(notificationCounter, mBuilder.build());
notificationCounter++;
}
我尝试设置的图像是8kb的PNG图像,无济于事。 你能帮忙的话,我会很高兴。 谢谢。
更新资料
即使IDE正确显示它,通知中收到的图像也不正确。
现在,当我尝试将其添加为资产时,它显示预览非常错误。 并且生成的图像也是错误的。
屏幕截图:
如您所见,它只是说图像是灰色,但是是蓝色图像。
阿罗克斯的建议
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext());
mBuilder.setAutoCancel(true);
mBuilder.setSmallIcon(R.mipmap.twentynotelogo);
Bitmap icon = BitmapFactory.decodeResource(getResources(),
R.mipmap.twentynotelogo);
mBuilder.setLargeIcon(icon);
mBuilder.setContentTitle(subject);
mBuilder.setContentText(Html.fromHtml(text));
您需要实现新的通知规范,需要使用setLargeIcon()以及透明的小图标。
在您的情况下,您仅使用setSmallIcon()会导致问题。 只需设置大小图标即可使用(这是棒棒糖的更新)
更新:如果只需要设置小图标,则不需要使用位图并应用一些背景色
尝试从Android Studio中将其作为可绘制的图像获取为通知图标。 也可以使用setLarge()图标。 选择资源时,选择它是图像资产,如下所示。
通知图标会预览显示基于API级别的外观。
对于您的图标,您需要将其用作透明图标,然后以上述方法本身导入。 从图标中删除蓝色层,然后将其加载到Android Studio中。 您将如下所示。
然后,如果您仍想在图标中使用蓝色,则需要以编程方式将背景色添加到NotificationCompat.Builder中,如下所示:
int notificationcolor = getResources().getColor(R.color.my_notif_color);
mBuilder.setColor(notificationcolor);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.