wake-up-neo.net

Legen Sie Drawable oder Bitmap als Symbol in der Benachrichtigung in Android fest

Ich lade ein Bild vom Server als Bitmap herunter und konvertiere es in drawable. Jetzt möchte ich dieses drawable als Benachrichtigungssymbol verwenden. Aber das kann ich nicht. hier ist mein code:

    Notification notification = new NotificationCompat.Builder(context)

    .setContentTitle(title)

    .setContentText(message)

    .setContentIntent(intent)

    .setSmallIcon(bitmap)

    .setWhen(when)

    .build(); 

das Symbol ist jedoch ein Wert für Resources Int. Wenn ich es verwendet habe, gibt es einen Fehler. Irgendeine Hilfe

Bearbeiten:

Jetzt aktualisiere ich meinen Code und jetzt mache ich so:

          Notification notification = new NotificationCompat.Builder(context)

        .setContentTitle(title)

        .setContentText(message)

        .setContentIntent(intent)

        .setSmallIcon(icon)

        .setLargeIcon(bitmap)

        .setWhen(when)

        .build();

es gibt jedoch ein großes Symbol auf der linken Seite und ein kleines Symbol auf der rechten Seite. Ich möchte dies nicht, deshalb entferne ich die setSmallIcon-Zeile und führe meinen Code aus, aber er zeigt mir keine Benachrichtigungen

15
User42590

Wenn Sie die Entwicklerdokumente lesen, die für Notification.Builder spezifisch sind, werden Sie feststellen, dass setSmallIcon(int icon) ein Eine Ressourcen-ID im Paket der Anwendung des Zeichnungsobjektsbenötigt.

Wenn Sie ein Bild herunterladen, in eine Bitmap konvertieren und es dann auf setSmallIcon() setzen, wird immer noch ein Fehler angezeigt.

Selbst wenn Sie die Bitmap in eine Drawable konvertieren würden, zum Beispiel wie folgt:

Drawable d = new BitmapDrawable(getResources(), bmpFinal);

es wird immer noch ein Fehler ausgegeben, da Drawablenicht in Ihrem Anwendungspaket vorhanden ist.

Die einzig mögliche Lösung ist, eine Drawable-Ressource zu verwenden, die sich in Ihrer package befindet, und diese auf die setSmallIcon()-Methode zu setzen. Typische Verwendung:

builder.setSmallIcon(R.drawable.ic_launcher);

Alternativ erfordert die setLargeIcon (Bitmap icon) eine Bitmap-Instanz. Ohne zusätzliche Änderungen an Ihrem aktuellen Code vornehmen zu müssen (da Sie bereits über eine Bitmap verfügen), können Sie diesen so verwenden, wie er ist, wenn er Ihrer Anforderung entspricht.

Wenn nicht, müssen Sie eine Drawable-Ressource verwenden, die sich bereits in einem der drawable-Ordner befindet.

23
Siddharth Lele

sie können diese Methode ausprobieren 

 builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));

http://javatechig.com/Android/android-notification-example-using-notificationcompat

16
Remon Amin

Es gibt einige Punkte zu dieser Frage, die hauptsächlich mit API 23+ zusammenhängen. Wenn Sie nur an setSmallIcon interessiert sind, gehen Sie zum zweiten und dritten Thema.

1 :

Sie können das LargeIcon wie folgt aus einer Drawable (anstelle der Ressourcen-ID) festlegen

Drawable drawable= ContextCompat.getDrawable(this,R.drawable.your_drawable);

            Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();

            NotificationCompat.Builder mBuilder =
                    new NotificationCompat.Builder(context)
                            .setLargeIcon(bitmap)
                            .setContentTitle("hahah")
                            .setContentText("Tap to stop")
                            .setOngoing(true);

2. 

Wenn Sie ein kleines Symbol in der API unter 23 setzen müssen, müssen Sie eine Ressourcennummer wie R.drawable.your_resource..__ festlegen. Mit NotificationCompat.Builder können Sie keine Drawables oder Bitmaps in setSmallIcon() verwenden.

3. 

glücklicherweise wurde die Unterstützung auf Icon auf setSmallIcon() in Version 23+ erweitert, wobei der Notification.Builder wie folgt verwendet wurde: 

 Drawable drawable = ContextCompat.getDrawable(this,R.drawable.your_drawable);

            Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();

            Notification.Builder mBuilder =
                    new Notification.Builder(context)
                            .setSmallIcon(Icon.createWithBitmap(bitmap))
                            .setLargeIcon(bitmap)
                            .setContentTitle("hahah")
                            .setContentText("Tap to stop")
                            .setOngoing(true);
11
Lucas Paolillo

Bessere Option, Anwendungssymbol zu erhalten

 Drawable drawable=getApplicationInfo().loadIcon(getPackageManager());
 Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();



.setSmallIcon(getApplicationInfo().icon)
.setLargeIcon(bitmap)
3
Neeraj Singh

Es ist sehr wichtig, das Bild transparent zu machen 

0