android在通知中嵌入换行符

问题描述 投票:6回答:3

我需要在通知中嵌入换行符。我有两行不同的数据,我需要嵌入换行符来区分两者。我反驳了一个反斜杠,但这不起作用。

有没有办法做到这一点?

android notifications
3个回答
4
投票

据我所知,除了创建自定义Notification布局之外,没有办法做到这一点。 Notification文档有一个逐步的过程,并且非常彻底。 Here is the link to that.

根据需要创建两行只意味着在布局XML中添加额外的TextView。然后你只需将每个TextView的文本设置为两行数据,如示例所示。


1
投票

尽管其他人在这里说过,您不需要使用RemoteViews或自定义布局来显示多行。可以使用多行文本,但仅限于扩展通知时。

为此,您可以使用NotificationCompat.BigTextStyle。如果您阅读开发指南here,那么您会注意到他们提到了这个提示:

提示:要在文本中添加格式(粗体,斜体,换行符等),您可以使用add styling with HTML markup

所以,换句话说:

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. 标题可以没有格式(即不要尝试在这里使用HTML)
  2. 正文可以包含我们想要的格式,但我们必须注意,折叠通知时不会显示换行符。所有其他HTML格式在折叠/展开状态下都能正常工作。您可以根据需要加粗,斜体等(我认为)

如果您不想在推送通知中发送HTML格式,那么另一个选项是使用某种降​​价格式并在建立通知之前使用SpannableStringBuilder手动处理


0
投票

您需要在应用中制作自定义通知构建器。更多详细信息:https://developer.android.com/guide/topics/ui/notifiers/notifications.html#CustomExpandedView,我花了很长时间才找到让firebase在所有情况下调用onMessageReceived的方法。

  1. 应用程序在前景
  2. 应用程序在背景中
  3. 应用程序被杀了。

基本上你通过api发送到firebase的消息必须在你的json请求中没有“notification”键到firebase服务器,并且只使用“data”键,如下所示,firebase服务将在上面列出的所有情况下调用你的onMessageReceived。

{
  "to": "/topics/your_topic",
   "data": {
       "key1":"data_key1",
       "title":"",
       "line1":"data1",
       "line2":"data2"
   }
} 
© www.soinside.com 2019 - 2024. All rights reserved.