Значок уведомлений Android 5.1 пуст
При использовании Parse для push-уведомлений наше приложение всегда отображает значок запуска приложения.
В последней версии Android 5.1 значок выглядит пустым (белый квадрат).
Я попытался установить значок в метаданных:
<meta-data android:name="com.parse.push.notification_icon" android:resource="@drawable/noti_icon"/>
Исходя из вопроса здесь
Но ничего не работает.
Любые идеи?
Ответы
Ответ 1
Вы должны использовать прозрачный и белый значок под Android Lollipop 5.0 или выше. Вы можете расширить класс ParsePushBroadcastReceiver и переопределить два метода, чтобы получить значок уведомлений, совместимый с этими API-интерфейсами Android.
@Override
protected int getSmallIconId(Context context, Intent intent) {
return R.drawable.your_notifiation_icon;
}
@Override
protected Bitmap getLargeIcon(Context context, Intent intent) {
return BitmapFactory.decodeResource(context.getResources(), R.drawable.your_notifiation_icon);
}
Не забудьте настроить код для поддержки Lollipop и предыдущих API.
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
return BitmapFactory.decodeResource(context.getResources(), R.drawable.your_notifiation_icon_lollipop);
}
else{
return BitmapFactory.decodeResource(context.getResources(), R.drawable.your_notifiation_icon);
}
Ответ 2
Это не связано с Parse или push nitification, а просто как Android 5.0 обрабатывает значки уведомлений.
См. Этот выпущенный вопрос:
Значок панели уведомлений становится белым в Android 5 Lollipop
Ответ 3
Хотя @Pelanes имеет правильный ответ (и должен быть принят), вот что я сделал. Обратите внимание, что в "Анализ данных для getSmallIconId" укажите следующее:
Retrieves the small icon to be used in a Notification. The default implementation uses the icon specified by com.parse.push.notification_icon meta-data in your AndroidManifest.xml with a fallback to the launcher icon for this package. To conform to Android style guides, it is highly recommended that developers specify an explicit push icon.
Поэтому не обязательно переопределять методы getSmallIconId() и getLargeIcon().
Что я сделал для решения проблемы, я только что сделал копию своего значка, пробил прозрачные "дыры" в значок и установил метаданные com.parse.push.notification_icon
в своем манифесте, чтобы указать на этот новый значок.
Для Android 5.0 требуется, чтобы значок вашего уведомления был белым и прозрачным, как указывали другие. Поэтому необходимо создать отдельный значок. Одна строка в манифесте и один новый доступный файл - все, что требуется.
Ответ 4
Попробуйте этот код.
Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(largeIcon)
.setContentText(data)
.setContentTitle("Notification from Parse")
.setContentIntent(pendingIntent);