我正在开发一个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正确显示,通知中收到的图像也不正确。
现在,当我尝试将其添加为资产时,它显示预览非常错误。生成的图像也是错误的。
屏幕截图:
正如你所看到的,它只是说图像是一些灰色,但它是一个蓝色的图像。
Aloks建议
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));
答案 0 :(得分:0)
您需要实施新的通知规范, 需要使用setLargeIcon()和透明的小图标。
在您的情况下,您只使用setSmallIcon()导致问题。 只需设置小图标和大图标即可。(这是棒棒糖的更新)
更新:如果您只需要设置小图标而不是需要使用位图并应用一些背景颜色
答案 1 :(得分:0)
尝试将图像作为可绘制的Android Studio作为通知图标。 也可以使用setLarge()图标。 在选择资源时选择它是Image资产,如下所示。
通知图标会在预览中显示基于API级别的内容。
对于您的图标,您需要将其用作透明图标,然后在上述方法中导入。从图标中删除蓝色图层,然后将其加载到Android Studio中。您将得到如下所示的内容。
然后,如果您仍然希望图标中有蓝色,则需要以编程方式将背景颜色添加到NotificationCompat.Builder中
int notificationcolor = getResources().getColor(R.color.my_notif_color);
mBuilder.setColor(notificationcolor);