3

Ich arbeite an einer App, wo ich eine Benachrichtigung für den Benutzer erstellen. Ich möchte, dass das Symbol in der Statusleiste weiß angezeigt wird, aber blau angezeigt wird, wenn es im Dropdown-Benachrichtigungsmenü angezeigt wird. Hier sehen Sie ein Beispiel für die Google-Store-App.Android Farbbenachrichtigungssymbol

Weiß Benachrichtigung in der Statusleiste:

enter image description here

Farbige Benachrichtigung im Dropdown-Menü:

enter image description here

Wie kann ich das wiederholen? Welche Eigenschaften muss ich einstellen?

Edit: Hier ist meine aktuellen Code - Ich habe das Bild ganz weiß mit transparentem Hintergrund, so sieht es aus in der Statusleiste in Ordnung, aber in der Anmeldung fallen, das Bild ist immer noch das gleiche weiße Farbe:

private NotificationCompat.Builder getNotificationBuilder() { 
     return new NotificationCompat.Builder(mainActivity) 
       .setDeleteIntent(deletedPendingIntent) 
       .setContentIntent(startChatPendingIntent) 
       .setAutoCancel(true) 
       .setSmallIcon(R.drawable.skylight_notification) 
       .setColor(ContextCompat.getColor(mainActivity, R.color.colorPrimary)) 
       .setContentTitle(mainActivity.getString(R.string.notification_title)) 
       .setContentText(mainActivity.getString(R.string.notification_prompt)); 
    } 
+0

ich in der Lage war, dieses Problem zu lösen - siehe meine Antwort unten. – Oblivionkey3

Antwort

4

fand ich die Antwort auf meine Frage hier: https://stackoverflow.com/a/44950197/4394594

Ich weiß nicht ganz, was das Problem war, aber durch die große png setzen, die ich für das Symbol in die diesem Werkzeug das erzeugt https://romannurik.github.io/AndroidAssetStudio/icons-notification.html#source.type=image&source.space.trim=1&source.space.pad=0&name=ic_skylight_notification und durch Stellen Verwendung wurde Symbole, die es in meinen Mipmap-Ordner gab, konnte ich die setColor(...) Eigenschaft ordnungsgemäß funktionieren.

+1

DANKE! Ich habe viel zu lange, warum immer noch mein Benachrichtigungssymbol, um herauszufinden, wurde in der Mitteilung Bannern erscheinen weiß und schließlich mit diesem Werkzeug meines Benachrichtigungssymbol verwendet richtig die Farbe in dem Banner (während sie noch weiß in der Statusleiste ist) –

+0

DANKE ! Ich habe viel zu lange damit verbracht! – user1032613

0

Beim Erstellen der Benachrichtigung können Sie die Farbe und das Symbol festlegen. Wenn Ihr Symbol ein reines weißes Bild ist, wird es die Farbe für Sie an den richtigen Stellen anwenden.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 
      val manager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager 
      val notificationId = 10 // Some unique id. 

      // Creating a channel - required for O's notifications. 
      val channel = NotificationChannel("my_channel_01", 
        "Channel human readable title", 
        NotificationManager.IMPORTANCE_DEFAULT) 

      manager.createNotificationChannel(channel) 

      // Building the notification. 
      val builder = Notification.Builder(context, channel.id) 
      builder.setContentTitle("Warning!") 
      builder.setContentText("This is a bad notification!") 
      builder.setSmallIcon(R.drawable.skull) 
      builder.setColor(ContextCompat.getColor(context, R.color.colorPrimary)) 
      builder.setChannelId(channel.id) 

      // Posting the notification. 
      manager.notify(notificationId, builder.build()) 

     } 
+0

Leider änderte sich bei mir die Farbe nicht, ich ändere die Farbe des Textes neben dem Bild im Benachrichtigungsfeld, ändere die Farbe des Bildes überhaupt nicht. – Oblivionkey3

+0

Verwenden Sie ein reines weißes Symbol als kleines Symbol? Es sollte das färben, wenn es nötig ist. –

+0

Es ist reines Weiß mit transparentem Hintergrund, und es ist als png – Oblivionkey3

0

können Sie die DrawableCompat.setTint(int drawable); des ziehbar verwenden, bevor die ziehbar Einstellung. Und tun mutate() die ziehbar sonst die Farbtönung wird für jede Instanz dieser ziehbar

+0

Ich würde abraten oder sonst werden Sie ein farbiges Symbol in der Statusleiste haben. –

2

hier angewendet werden, was ich für meine app tat ...

private void showNotification(Context context) { 
    Log.d(MainActivity.APP_TAG, "Displaying Notification"); 
    Intent activityIntent = new Intent(context, MainActivity.class); 
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, activityIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context); 
    mBuilder.setSmallIcon(R.drawable.ic_notification); 
    mBuilder.setColor(Color.GREEN); 
    mBuilder.setContentIntent(pendingIntent); 
    mBuilder.setContentTitle("EarthQuakeAlert"); 
    mBuilder.setContentText("It's been a while you have checked out earthquake data!"); 
    mBuilder.setDefaults(Notification.DEFAULT_SOUND); 
    mBuilder.setAutoCancel(true); 
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    mNotificationManager.notify(1, mBuilder.build()); 
} 

Probe mit Farbe:

enter image description here

Muster ohne Farbe: enter image description here

1

Für Feuerbasis nofitications von der Konsole gesendet Sie müssen nur diese in Ihrem Manifest hinzuzufügen:

<meta-data 
     android:name="com.google.firebase.messaging.default_notification_icon" 
     android:resource="@drawable/white_logo" /> 

    <meta-data 
     android:name="com.google.firebase.messaging.default_notification_color" 
     android:resource="@color/custom_color" /> 

Wo white_logo ist Ihre App weiß-Logo und custom_color ist die Farbe, die Sie auf das Symbol und Text gefärbt haben wollen.

Weitere Details hier: https://firebase.google.com/docs/cloud-messaging/android/client

Verwandte Themen