繁体   English   中英

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

[英]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将正确显示图像: 在此处输入图片说明

即使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()图标。 选择资源时,选择它是图像资产,如下所示。 通知图标生成Android Studio

通知图标会预览显示基于API级别的外观。

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

然后,如果您仍想在图标中使用蓝色,则需要以编程方式将背景色添加到NotificationCompat.Builder中,如下所示:

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

mBuilder.setColor(notificationcolor);

暂无
暂无

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

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