Android 通知显示错误的图标
Android notification displays wrong icon
我有一个带有图标 ID 的静态数组:
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}};
我显示所有图标,用户可以选择一个。所选图标的 ID 将传递给通知管理器。它显示这样的通知:
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(notification.getIconId())
.setContentTitle(notification.getTitle());
我已与 "test-ImageView" 核对过该 ID 是否正确。 ImageView 显示用户选择的图标(setImageResource(notification.getIconId());)
。但在通知栏中的通知上显示另一个图标或 none。
如果我使用 .setLargeIcon() 它会再次显示正确的图标。
.setLargeIcon(BitmapFactory.decodeResource(getResources(), notification.getIconId()))
但仅限于大图标。小图标是空的。
图标是通过矢量资源导入的素材图标。
这有什么问题?
找到原因了。您不能将 xml 资源用作通知图标。
我有一个带有图标 ID 的静态数组:
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}};
我显示所有图标,用户可以选择一个。所选图标的 ID 将传递给通知管理器。它显示这样的通知:
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(notification.getIconId())
.setContentTitle(notification.getTitle());
我已与 "test-ImageView" 核对过该 ID 是否正确。 ImageView 显示用户选择的图标(setImageResource(notification.getIconId());)
。但在通知栏中的通知上显示另一个图标或 none。
如果我使用 .setLargeIcon() 它会再次显示正确的图标。
.setLargeIcon(BitmapFactory.decodeResource(getResources(), notification.getIconId()))
但仅限于大图标。小图标是空的。
图标是通过矢量资源导入的素材图标。
这有什么问题?
找到原因了。您不能将 xml 资源用作通知图标。