Android вставлять новую строку в уведомлении - PullRequest
6 голосов
/ 22 февраля 2012

Мне нужно вставить новую строку в уведомление. У меня есть две строки данных, которые отличаются, и мне нужно вставить новую строку, чтобы различать эти две. Я использовал обратную косую черту, но это не работает.

Есть ли способ сделать это?

Ответы [ 3 ]

4 голосов
/ 22 февраля 2012

Насколько я знаю, нет другого способа сделать это, кроме как создать собственный макет Notification.Документация Notification содержит пошаговый процесс и довольно тщательна. Вот ссылка на это.

Создание двух нужных вам строк означает просто добавление дополнительного TextView в XML-макет.Затем вы просто установите каждый текст TextView на две строки данных, как показано в примере.

1 голос
/ 08 сентября 2018

Вам не нужно использовать RemoteViews или пользовательский макет для отображения нескольких строк, несмотря на то, что здесь говорили другие! Многострочные тексты возможны, но только при расширении уведомления.

Для этого вы можете использовать NotificationCompat.BigTextStyle . И если вы прочитаете руководства разработчика здесь , то заметите, что они упоминают этот совет:

Совет. Чтобы добавить форматирование в текст (полужирный, курсив, разрывы строк и т. Д.), Вы можете добавить стили с разметкой HTML .

Итак, другими словами:

val title = "My Title"
val body = "Line 1<br>Line 2<br><i>Italic Line 3</i>"
val formattedBody = SpannableString(
   if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) Html.fromHtml(body)
   else Html.fromHtml(body, Html.FROM_HTML_MODE_LEGACY)
)

NotificationCompat.Builder(context, channelId)
   .setColor(ContextCompat.getColor(context, R.color.colorPrimary))
   .setContentTitle(title)
   .setContentText(formattedBody)
   .setStyle(NotificationCompat.BigTextStyle().bigText(formattedBody).setBigContentTitle(title))
   .setSmallIcon(R.drawable.ic_small_notification_icon)
   .build()

Что нужно знать о том, как это работает:

  1. Заголовок может иметь форматирование no (т.е. не пытайтесь использовать HTML здесь)
  2. Тело может иметь столько форматирования, сколько мы хотим, но мы должны отметить, что разрывы строк не будут отображаться, когда уведомление свернуто. Все остальные форматы HTML отлично работают как в свернутом, так и в развернутом состоянии. Вы можете выделять жирным шрифтом, курсивом и т. Д. Столько, сколько хотите (я думаю)

Если вы не хотите отправлять форматирование HTML в своем push-уведомлении, тогда другой вариант - использовать какое-либо форматирование уценки и вручную обработать его перед созданием уведомления с помощью SpannableStringBuilder

0 голосов
/ 05 августа 2016

Вам нужно сделать пользовательский конструктор уведомлений в вашем приложении. более подробно здесь: https://developer.android.com/guide/topics/ui/notifiers/notifications.html#CustomExpandedView, У меня так много времени, чтобы найти способ заставить firebase вызывать onMessageReceived во всех случаях.

  1. приложение на переднем плане
  2. приложение в фоновом режиме
  3. приложение было убито.

в основном ваше сообщение для firebase через api не должно иметь ключа " messages " в вашем json-запросе к серверу firebase и использовать только ключ " data ", как показано ниже, служба firebase будет Звоните на onMessageReceived во всех случаях, перечисленных выше.

{
  "to": "/topics/your_topic",
   "data": {
       "key1":"data_key1",
       "title":"",
       "line1":"data1",
       "line2":"data2"
   }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...