web-dev-qa-db-ja.com

Android色通知アイコン

ユーザーの通知を作成するアプリで作業しています。アイコンがステータスバーにあるときは白で表示され、ドロップダウン通知メニューに表示されているときは青で表示されます。 Googleストアアプリで行われているのと同じことの例を次に示します。

ステータスバーに白い通知:

enter image description here

ドロップダウンメニューの色付き通知:

enter image description here

これをどのように複製できますか?どのプロパティを設定する必要がありますか?

編集:現在のコードです-画像を透明な背景ですべて白にしたので、ステータスバーでは正常に見えますが、通知ドロップでは、画像はまだ同じ白色です:

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

私の質問に対する答えはここにありました: https://stackoverflow.com/a/44950197/4394594

問題が何であるかは完全にはわかりませんが、アイコンに使用していた巨大なpngをこのツールに入れることで https://romannurik.github.io/AndroidAssetStudio/icons-notification.html# source.type = image&source.space.trim = 1&source.space.pad = 0&name = ic_skylight_notification そして生成されたアイコンをミップマップフォルダーに配置することで、setColor(...)プロパティを正しく動作させることができました。

24
Oblivionkey3

コンソールから送信されるfirebase nofiticationsの場合、マニフェストにこれを追加するだけです。

    <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" />

ここで、white_logoはアプリの白いロゴで、custom_colorはアイコンとテキストに色を付けたい色です。

詳細はこちら: https://firebase.google.com/docs/cloud-messaging/Android/client

13
radu_paun

これが私のアプリのためにしたことです...

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());
}

色付きのサンプル:

enter image description here

色のないサンプル: enter image description here

13
JRG

通知を作成するときに、色とアイコンを設定できます。 アイコンが真っ白な画像である場合、正しい場所に色を適用します。

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

プッシュ通知または組み込み通知でGmailとTwitterのように色とタイトル名を変更する場合は、これらの行を通知に追加する必要があります。

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

アイコンに使用される1行目と2行目には色を定義する必要があります

0
Pooja Kumari

ドロアブルを設定する前に、ドロアブルのDrawableCompat.setTint(int drawable);を使用できます。そしてmutate()ドロアブルを実行します

0
Umar Hussain