Отображать уведомления на всех устройствах Android последовательно
Мне нужно отобразить уведомление с текстом, изображением и двумя кнопками. Я использую NotificationCompat из библиотеки поддержки, и все прекрасно работает, пока я не начну тестировать его на разных устройствах.
Вот одно и то же уведомление на 3 разных устройствах:
Здесь есть некоторые проблемы:
Устройство 1 (Nexus 5, 6.0): текст сообщения отсутствует, изображение обрезано.
Устройство 2 (Эмулятор, 7.0): изображение сильно обрезано
Устройство 3 (Xiaomi mi5s, 6.0): текст сообщения отсутствует, текст действия черный и почти невидим
Другие дефекты, которые мне удалось воспроизвести: белые значки действий на белом фоне; изображение не отображается (Samsung Galaxy S8 Plus, Android 7.0); кнопки действий не отображаются.
В конце концов, две самые большие проблемы: некоторые части уведомлений не отображаются и значки действий или тексты действий, имеющие почти тот же цвет, что и фон.
Вот мой код для отображения уведомления:
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setContentTitle("Test title");
builder.setContentText("Test notification text description");
builder.setAutoCancel(true);
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
builder.setContentIntent(pendingIntentContent);
NotificationCompat.Style style;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && image != null) {
style = new NotificationCompat.BigPictureStyle().bigPicture(image);
builder.setStyle(style);
}
builder.addAction(R.drawable.ic_share_vector, "SHARE", pendingIntentShare);
if(pendingIntentBookMark != null){
builder.addAction(R.drawable.ic_bookmark, "SAVE", pendingIntentBookMark);
}
return builder.build();
Я думал об использовании своего собственного макета, но не могу найти способ понять, какой основной цвет устройства. Некоторые устройства используют белые уведомления на черном фоне, некоторые используют черные уведомления на черном фоне и так далее. Уведомление будет выглядеть чуждым, если оно использует другой цвет.
Я понимаю, что я могу обвинять определенные устройства в этих проблемах, но мне все еще нужны мои уведомления, чтобы они работали практически везде и выглядели более или менее согласованно (без серьезных сбоев, таких как невидимый текст или отсутствующие элементы).
Есть ли способ установить фон и цвет текста кнопок действий, чтобы они всегда были видны?
Есть ли способ узнать, какие цвета использует устройство для области уведомлений и фона уведомлений?
Есть ли что-то кроме BigPictureStyle, которое я могу использовать?
Я просто надеюсь, что у кого-то были такие же проблемы, и они нашли какой-то обходной путь.