web-dev-qa-db-ja.com

NotificationCompat.Builder setLargeIcon()が機能していませんか?

通知にコードmNotificationBuilder.setLargeIcon(BitmapFactory.decodeResource( getResources(), R.drawable.ic_large_icon));を追加すると、エラーや警告なしに機能しなくなります。これは、Lollipopより前、Lollipop、およびそれ以上でのみ有効です。そして、「動作する」とは、通知が表示されることを意味します。

私のサンプルコード:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);

mBuilder.setSmallIcon(R.drawable.icon);
mBuilder.setContentTitle("Content Title");
mBuilder.setContentText("Content Text");
mBuilder.setLargeIcon(BitmapFactory.decodeResource( getResources(), R.drawable.ic_large_icon));

startForeground(1, mBuilder.build());

ビットマップをさまざまな方法でロードしようとしましたが、失敗し続けます...アイコンは128x128なので、サイズは問題になりませんか?

別のIDも試しましたが、問題を解決するものはありません。

私はどんなアドバイスもとてもうれしいです。正しい方向へのプッシュは私にとって世界を意味するでしょう。

EDIT 1#

この通知はサービスから発行されます。サービスは動作しており、ログ出力は「startForeground()」が実行された後のコードを教えてくれます。

17

最初に大きなアイコンを設定し、次に小さなアイコンを設定する必要があります。

私の場合、このコードは機能しています:

    mBuilder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_message));
    mBuilder.setSmallIcon(R.mipmap.ic_message);
    mBuilder.setContentTitle("Inbox");
    mBuilder.setContentText("New message received");
21
Salar Rastari

Lolipop以前は、通知用の大きなアイコンはありませんでした。小さなアイコンは64x64である必要があり、作成中は白と透明の2色でレンダリングされることに注意してください。

NotificationCompat.Builder mBuilder;

if (SystemTools.isAndroidApiVersionBeforeLollipop()) {
                mBuilder =
                        new NotificationCompat.Builder(context)
                                .setContentIntent(pendingIntent)
                                .setSmallIcon(iconRid)
                                .setColor(ContextCompat.getColor(context, R.color.transparent))
                                .setContentTitle(caption)
                                .setContentText(text)
                                .setOngoing(true)
                                .setWhen(0)
                                .setPriority(NotificationCompat.PRIORITY_LOW)
                ;
            } else {
                mBuilder =
                        new NotificationCompat.Builder(context)
                                .setContentIntent(pendingIntent)
                                .setSmallIcon(iconRid)
                                .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), bigIconRid))
                                .setColor(ContextCompat.getColor(context, R.color.transparent))
                                .setContentTitle(caption)
                                .setContentText(text)
                                .setOngoing(true)
                                .setWhen(0)
                                .setPriority(NotificationCompat.PRIORITY_LOW)
                ;

}

3
Darko