推送通知图标 Android

Posted

技术标签:

【中文标题】推送通知图标 Android【英文标题】:Push Notification Icon Android 【发布时间】:2015-04-22 14:01:00 【问题描述】:

如何在android的通知区域添加通知图标? 我试试这个,但这会在通知区域显示一个空白区域。

mNotificationManager = (NotificationManager) this
                .getSystemService(Context.NOTIFICATION_SERVICE);        
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                new Intent(this, Receive_Message_list.class), 0);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
                this)           
        .setSmallIcon(R.drawable.pushicon)
        .setContentTitle("MAY-I")
        .setStyle(new NotificationCompat.BigTextStyle()
                .bigText(notification_message))
                .setContentText(notification_message);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

【问题讨论】:

你能分享一下通知的截图吗..代码似乎很好..logcat也有错误吗? logcat 没有显示任何错误。但是状态栏显示一个空白的白色图标代替应用程序图标 @RahilAli 。你能开始接受你的问题的答案吗? 【参考方案1】:

在 android 5.0 上,图标通过滤色器传递,使所有非透明像素变为白色。

来自http://developer.android.com/design/patterns/notifications.html

使用颜色将您的应用与其他应用区分开来。通知图标只能是白色透明背景图片。

【讨论】:

是的,这是正确的,每个人都想知道为什么实际通知中有一个彩色图标,而它在顶部的实际状态栏中只显示一个白色轮廓。【参考方案2】:
private void showNotification(final String title, String text, int ID, boolean showTimeStamp) 

        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) //Use a builder
                .setContentTitle(title) // Title
                .setContentText(text) // Message to display
                .setTicker(text).setSmallIcon(R.drawable.ic_notif_small) // This one is also displayed in ticker message
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.bulb)); // In notification bar

        Intent resultIntent = new Intent(this, MainActivity.class);
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addParentStack(MainActivity.class);
        stackBuilder.addNextIntent(resultIntent);
        PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
        mBuilder.setContentIntent(resultPendingIntent);

        //mBuilder.addAction(R.drawable.bulb_small, "OK", resultPendingIntent);

        Notification notification = mBuilder.build();
        notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS | Notification.DEFAULT_SOUND;
        notification.defaults |= Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE;

        long time = 0;
        if (showTimeStamp)
            Calendar.getInstance().getTimeInMillis();
        else
            time = android.os.Build.VERSION.SDK_INT >= 9 ? -Long.MAX_VALUE : Long.MAX_VALUE;

        notification.when = time;

        //notification.icon = R.drawable.ic_moneta_logo_small;

        //mNotificationManager.cancelAll(); //Clear all currently display notifications
        mNotificationManager.cancel(ID);
        mNotificationManager.notify(ID, notification);
    

【讨论】:

以上是关于推送通知图标 Android的主要内容,如果未能解决你的问题,请参考以下文章

如何在后台的android应用程序图标上计算推送通知消息徽章

Android推送通知:通知中未显示图标,而是显示白色方块

如何在 Android 中禁用多个推送通知图标,我正在使用 Parse.com

为各种 Android 操作系统版本设置推送通知图标

混合应用推送通知图标未在 Android 8 (Oreo) 上显示

在代号应用程序中添加 android 推送通知图标