2016-04-04 44 views
0

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

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

正如你所看到的第一个通知,该图标是不正确的。

截图:

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++; 
} 

,我想设置的图像是一个PNG图像,8KB的,不利于它设置任何方式。你能帮忙的话,我会很高兴。谢谢。

更新

当我选择图像时,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)); 
+0

,您直接使用PNG图像从Android应用程序与你的绘制文件夹在通知生成器方法调用中设置? –

+0

@ShadabK:是的。我尝试过,并尝试将它作为位图使用该位图,但都没有奏效。它只是显示您现在在屏幕截图中看到的框。 –

回答

0

您需要执行通知新的规范, 需要与透明小图标使用setLargeIcon()在一起。

在你的情况下,你正在使用setSmallIcon()只会导致问题。 只需设置小和大图标,将工作(这是在棒棒糖更新)

更新:如果你只需要设置小图标比你需要使用位图和应用一些背景颜色

+0

你能否详细说明我如何用小图标和我想要的图像来做到这一点? –

+0

如果您的小图标需要做任何特别的事情,请注意图片应该是单色,并且具有透明度,否则完整的图片会受到系统自动应用的颜色过滤的影响,在通知中显示小图标 – Alok

+0

好的,我会尝试现在这个。 Moment –

0

尝试将图像作为Android Studio的可绘制图像作为通知图标。 还使用setLarge()图标。 选择资源时选择它是一个图像资产,如下所示。 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); 
+0

预览显示一个灰色的图像,而不是实际的预览。这是正常的吗? –

+0

是的,它是Android Studio如何生成图标,您需要为其提供适当的图像,以便它正确地反转。 –

+0

好的,资产工作室创建了4个图像并将它们放置在mimmap - ****中...您能告诉我如何访问图像吗? –

相关问题