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

时间:2016-04-04 13:58:58

标签: java android notifications

我正在开发一个Android项目,我会在发生事件时发送通知。 不幸的是,当我将通知图标更改为我们的项目图标(这是一个8.4kb的图像)时,我没有收到任何通知。这是特别有问题的,因为没有抛出任何错误,只是没有收到任何通知。

当我将图像更改为简单的红色方块时,我可以看到通知,但通知甚至没有红色。如何将通知图像正确设置为所需图像。谢谢。

正如您可以看到第一个通知,图标不正确。

屏幕截图:

enter image description here

代码:

  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会正确显示图像,如截图所示: enter image description here

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

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

屏幕截图:

enter image description here

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

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

2 个答案:

答案 0 :(得分:0)

您需要实施新的通知规范, 需要使用setLargeIcon()和透明的小图标。

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

更新:如果您只需要设置小图标而不是需要使用位图并应用一些背景颜色

答案 1 :(得分:0)

尝试将图像作为可绘制的Android Studio作为通知图标。 也可以使用setLarge()图标。 在选择资源时选择它是Image资产,如下所示。 Notification icon generation Android Studio

通知图标会在预览中显示基于API级别的内容。

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

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

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

mBuilder.setColor(notificationcolor);