Java Android:未发送通知&;图标更改时显示

Java Android:未发送通知&;图标更改时显示,java,android,notifications,Java,Android,Notifications,我正在从事一个Android项目,在这个项目中,每当发生事件时,我都会发送通知不幸的是,当我将通知图标更改为我们的项目图标(8.4kb图像)时,我没有收到任何通知。这尤其有问题,因为没有抛出错误,只是没有收到通知 当我将图像更改为简单的红色正方形时,我可以看到通知,但通知甚至不是红色的。如何将通知图像正确设置为所需图像。多谢各位 正如您看到的第一个通知,图标不正确 截图: 代码: NotificationCompat.Builder mBuilder = new NotificationC

我正在从事一个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会按照屏幕截图所示正确显示图像:

即使IDE正确显示,在通知中接收到的图像也不正确

现在,当我尝试将其添加为资产时,它显示预览非常错误。生成的图像也是错误的

截图:

正如你所看到的,它只是说图像是灰色的,但它是蓝色的

阿洛克斯建议


您需要实现新的通知规范, 需要使用setLargeIcon(),以及透明小图标

在您的情况下,您使用的setSmallIcon()只会导致问题。 只需设置大小图标即可。(这是棒棒糖中的更新)


更新:如果只需要设置小图标,而不需要使用位图并应用一些背景色,请尝试从Android Studio获取可绘制的图像作为通知图标。 还可以使用setLarge()图标。 选择资源时,选择它是一个图像资源,如下所示。

通知图标在预览中根据API级别显示其外观

对于您的图标,您需要将其用作透明图标,然后在上述方法中导入。从图标中删除蓝色层,然后将其加载到Android Studio中。您将得到如下所示的结果。

然后,如果您仍然希望图标中有蓝色,则需要以编程方式将背景色添加到NotificationCompat.Builder中

int notificationcolor = getResources().getColor(R.color.my_notif_color);

mBuilder.setColor(notificationcolor);

您是否直接从Android应用程序中的drawable文件夹使用png图像,并在notification builder方法调用中进行设置?@ShadabK:Yes。我试过了,也试过把它做成位图并使用那个位图,但都不起作用。它只是显示了你现在在屏幕截图中看到的框。你能详细说明我如何使用小图标和我想要的图像吗?如果是小图标,你需要做一些特殊的事情,请注意,图像应为单色,并具有透明度,否则在通知中显示小图标时,系统自动应用颜色过滤会影响整个图像。好的,我现在就试试。MomentI尝试了你的建议,也更新了主要帖子以包含代码。设置大图标时未收到任何通知。我试图设置的图像是:预览显示的是灰色图像,而不是实际的预览。这正常吗?是的,这是Android Studio生成图标的方式,您需要为其提供合适的图像,以便其正确反转。好的,assets Studio创建了4个图像,并将它们放置在MIMAP中--***。。。您能告诉我如何访问这些图像吗?您可以使用
R.mipmap
而不是
R.drawable
来访问它们,并且在您的代码中类似地添加它,如下所示
mBuilder.setSmallIcon(R.mipmap.filename)IDE在左侧正确显示预览。但图像仍然是一个方形框。我应该发布屏幕截图还是其他有用的东西?
int notificationcolor = getResources().getColor(R.color.my_notif_color);

mBuilder.setColor(notificationcolor);