webentwicklung-frage-antwort-db.com.de

android 7.0 Benachrichtigungssymbol erscheint weißes Quadrat

Ich verwende den folgenden Ausschnitt, um Benachrichtigungen in meiner Android-App zu generieren.

private void sendNotification(String contentText, String message) {

    Intent resultIntent = new Intent(this, MainActivity.class);
    resultIntent.putExtra("clear","clear");
    resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
     Intent.FLAG_ACTIVITY_CLEAR_TASK);

   PendingIntent piResult = PendingIntent.getActivity(this, 0, resultIntent,0);

    NotificationCompat.Builder builder=new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.icon)
            .setColor(ContextCompat.getColor(getApplicationContext(),R.color.red))
            .setContentTitle("title")
            .setContentText(message)
            .setAutoCancel(true)
            .setLargeIcon(BitmapFactory.decodeResource(getResources() 
            ,R.drawable.notification))
            .setContentIntent(piResult);

    NotificationCompat.InboxStyle notification = new NotificationCompat.InboxStyle(builder);

    int i;
    for(i=0; i<messageList.size();i++){
        notification.addLine(messageList.get(i));
    }
    notification.setBigContentTitle("title");
    notification.setSummaryText(contentText);

    NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(NOTIFICATION_ID,notification.build());
}

Es funktioniert in Android 5 und 6, aber für Android-Nougat funktioniert es nicht

6
Suresh Kumar

Ab der Android-Version von Lollpop haben sie die Änderungen für die Benachrichtigungen vorgenommen. Wenn Sie das kleine Symbol angeben, sollte es eine bestimmte Größe haben, wie in dieser Link erwähnt. 

Wichtig ist, dass das Bild transparent ist und nur white color enthält.

Sie können diese Frage überprüfen, um die Antwort zu erhalten

3
Ichigo Kurosaki

Befolgen Sie die docs von der Android API:

Statusleistensymbole setzen sich einfach aus weißen Pixeln auf einem transparenten Hintergrund zusammen, wobei Alpha-Blending für glatte Kanten und gegebenenfalls interne Textur verwendet wird.

Ihr gesamtes Bild aber die transparenten Teile werden in Weiß umgewandelt (ursprünglich weiß oder mit Farben). 

Eine Lösung besteht darin, ein Silhouette-Symbol mit Farbe zu erstellen. Auf diese Weise können Sie dasselbe Bild in allen Android-APIs verwenden. Ein Beispiel könnte dieses Symbol sein:

 White image on a transparent backdrop

In niedrigeren Versionen von Android sehen Sie das schwarze Gesicht, in den letzten Versionen sehen Sie dasselbe Gesicht, jedoch mit weißer Farbe. Das liegt an den transparenten Teilen (es scheint, dass SO die Transparenz entfernt, Sie können das Original aus hier ) des Bildes erhalten.

2
Alberto Méndez

Laut diesem Blog hier

Es steht dass

Sie werden feststellen, dass die Symbole in den neuen Benachrichtigungen nicht vorhanden sind. Stattdessen wird mehr Platz für die Etiketten selbst im begrenzten Bereich der Benachrichtigungsschattierung bereitgestellt. Die Benachrichtigungsaktionssymbole sind jedoch weiterhin erforderlich und werden in älteren Versionen von Android und auf Geräten wie Android Wear weiterhin verwendet.

Wenn Sie Ihre Benachrichtigung mit NotificationCompat.Builder und den dort verfügbaren Standardstilen erstellt haben, erhalten Sie standardmäßig das neue Erscheinungsbild, ohne dass Codeänderungen erforderlich sind.

1