web-dev-qa-db-de.com

Android Farbbenachrichtigungssymbol

Ich arbeite an einer App, in der ich eine Benachrichtigung für den Benutzer erstelle. Ich möchte, dass das Symbol in der Statusleiste weiß und im Dropdown-Benachrichtigungsmenü blau angezeigt wird. Im Folgenden finden Sie ein Beispiel für dasselbe, das von der Google Store-App ausgeführt wird.

Weiße Benachrichtigung in der Statusleiste:

enter image description here

Farbige Benachrichtigung im Dropdown-Menü:

enter image description here

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

Bearbeiten: Hier ist mein aktueller Code - Ich habe das Bild komplett weiß mit transparentem Hintergrund gemacht, damit es in der Statusleiste, aber im Benachrichtigungsfeld gut aussieht hat das Bild immer noch die 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));
    }
33
Oblivionkey3

Ich habe die Antwort auf meine Frage hier gefunden: https://stackoverflow.com/a/44950197/4394594

Ich weiß nicht genau, was das Problem war, aber indem ich die riesige PNG-Datei, die ich für das Symbol verwendet habe, in dieses Tool eingebe https://romannurik.github.io/AndroidAssetStudio/icons-notification.html# source.type = image & source.space.trim = 1 & source.space.pad = 0 & name = ic_skylight_notification und indem ich die generierten Icons in meinen Mipmap-Ordner legte, konnte ich die Eigenschaft setColor(...) erhalten richtig arbeiten.

24
Oblivionkey3

Für Firebase-Benachrichtigungen, die von der Konsole gesendet werden, müssen Sie nur Folgendes in Ihr Manifest einfü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" />

Wobei "white_logo" das weiße Logo Ihrer App und "custom_color" die Farbe ist, in der das Symbol und der Text farbig sein sollen.

Weitere Informationen finden Sie hier: https://firebase.google.com/docs/cloud-messaging/Android/client

13
radu_paun

Folgendes habe ich für meine App getan ...

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

Probe ohne Farbe: enter image description here

13
JRG

Beim Erstellen der Benachrichtigung können Sie die Farbe und das Symbol festlegen. Wenn es sich bei Ihrem Symbol um ein reines weißes Bild handelt, wird die Farbe an den richtigen Stellen für Sie angewendet.

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())
}
6
Advice-Dog

Wenn Sie die Farbe und den Titelnamen wie in Google Mail und Twitter in der Push-Benachrichtigung oder der integrierten Benachrichtigung ändern möchten, müssen Sie diese Zeilen in der Benachrichtigung hinzufügen.

 builder.setSmallIcon(R.drawable.skull)
    builder.setColor(ContextCompat.getColor(context, R.color.colorPrimary))

Erste Zeile für das Symbol und in der zweiten Zeile müssen Sie die Farbe definieren

0
Pooja Kumari

Sie können die Funktion DrawableCompat.setTint(int drawable); des Drawable verwenden, bevor Sie das Drawable einstellen. Und mach mutate() das Zeichenobjekt, andernfalls wird der Farbton auf jede Instanz dieses Zeichenobjekts angewendet

0
Umar Hussain