1

Как добавить значок уведомления в область уведомлений в android? Я пробую это, но это показывает пустое пустое пространство в области уведомлений.Значок Push Notification 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()); 
+0

вы можете поделиться скриншот уведомления .. код, кажется, хорошо .. тоже есть ошибки в LogCat? –

+0

logcat не показывает никакой ошибки. Но в строке состояния отображается пустой белый значок вместо значка приложения –

+0

@RahilAli. Можете ли вы начать принимать ответы на свои вопросы. – petey

ответ

6

На андроиде 5.0 значок передается через цветовой фильтр, который делает все непрозрачные пиксели белыми.

из, http://developer.android.com/design/patterns/notifications.html

Используйте цвет, чтобы отличить ваше приложение от других. Значки уведомлений должны быть только белым на прозрачном фоновом изображении.

+0

Спасибо за информацию .. Я тоже не знал об этом ... –

+0

Да, это правильно, все задавались вопросом, почему в фактическом уведомлении есть цветная иконка, в то время как в фактической строке состояния отображается только белый контур вершина. – Danuofr

1
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); 
    } 
Смежные вопросы