Уведомление Android отображает неправильный значок

У меня есть статический массив с иконками:

public static final int[][] ICON_IDS = { {R.drawable.ic_access_alarm_black_24dp, R.drawable.ic_access_time_black_24dp, R.drawable.ic_account_box_black_24dp, R.drawable.ic_add_black_24dp, R.drawable.ic_android_black_24dp, R.drawable.ic_clear_black_24dp, R.drawable.ic_delete_black_24dp },
        { R.drawable.ic_settings_black_24dp, R.drawable.ic_airplanemode_active_black_24dp, R.drawable.ic_filter_list_black_24dp, R.drawable.ic_account_box_black_24dp, R.drawable.ic_airline_seat_individual_suite_black_24dp, R.drawable.ic_delete_black_open_24dp, R.drawable.ic_delete_black_open_24dp}};

Я отображаю все значки, и пользователь может выбрать один. Идентификатор выбранной иконки передается менеджеру уведомлений. Это отображает уведомление как это:

NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(notification.getIconId())
                    .setContentTitle(notification.getTitle());

Я проверил с помощью "test-ImageView", что идентификатор правильный. ImageView отображает значок, выбранный пользователем (с setImageResource(notification.getIconId());), Но на уведомлении в панели уведомлений отображается другой значок или его нет. Если я использую.setLargeIcon(), он снова показывает правильный значок.

.setLargeIcon(BitmapFactory.decodeResource(getResources(), notification.getIconId()))

Но только в большом значке. Маленькая иконка пуста.

Значки - это значки материалов, импортируемые через векторные активы.

Что не так с этим?

1 ответ

Узнал почему. Вы не можете использовать ресурсы XML в качестве значков уведомлений.

Другие вопросы по тегам