因此,我正在构建一个消息传递应用程序,并且尝试使用NotificationCompat.MessagingStyle进行通知,它通常适用于一条消息,但是添加的每条消息仅替换最后一条消息,而不是显示直到此为止的每条消息清除或查看(所需结果),看看他们说要添加此类消息的文档
.addMessage(messages[1].getText(), messages[1].getTime(), messages[1].getPerson())
.addMessage(messages[2].getText(), messages[2].getTime(), messages[2].getPerson())
这使我假设它们将这些消息存储在某个位置的数组中,但是我不确定在哪里实现它,就好像我在同一个类中创建一个新数组一样,我假设如果保存,它将得到相同的结果共享首选项(似乎有点占用大量内存),或者在未读邮件的小型数据库中?我已经在我的消息中存储了一个值,用于确定它们是否已发送或已接收,我可以对所有未读消息运行查询,以填充列表并对其进行迭代,尽管这似乎对任何想法都显得过头了?
更新
仍然无法解决这个问题,试图列出消息列表并像这样添加它们,但仍然没有乐趣
NotificationCompat.MessagingStyle messagingStyle = new
NotificationCompat.MessagingStyle(message.getRecipientName());
messagingStyle.setConversationTitle(
getSmsTodayYestFromMilli(message.getTime_stamp().getTime()));
if (messages != null)
for(DatabaseMessage dbMessage : messages){
messagingStyle.addMessage(dbMessage.getMessage(),
dbMessage.getTime_stamp().getTime(),dbMessage.getRecipientName());
}
}
notificationBuilder.setStyle(messagingStyle);
答案 0 :(得分:1)
所以我找到了解决方法,但是仍然不确定在哪里存储列表,但是要添加一条消息,您实际上需要创建一个NotificationCompat.MessagingStyle.Message
然后使用addMessage
方法我正在尝试获取所有未读和遍历它们的消息的列表,但是它仍然有问题,但是我认为这些问题值得一个新的问题,这里是添加一条消息:
NotificationCompat.MessagingStyle messagingStyle = new
NotificationCompat.MessagingStyle(message.getRecipientName());
messagingStyle.setConversationTitle(getSmsTodayYestFromMilli(
message.getTime_stamp().getTime()));
if (messages != null){
Log.d(MYTAG,"list size " + messages.size());
for(DatabaseMessage databaseMessage : messages){
NotificationCompat.MessagingStyle.Message notificationMessage = new
NotificationCompat.MessagingStyle.Message(
databaseMessage.getMessage(),
databaseMessage.getTime_stamp().getTime(),
databaseMessage.getRecipientName()
);
messagingStyle.addMessage(notificationMessage);
}
}
notificationBuilder.setStyle(messagingStyle);
答案 1 :(得分:1)
我知道这是一个老问题,但这对某些人可能有用。
您可以从现有通知中提取以前的消息:
NotificationCompat.MessagingStyle style = NotificationCompat.MessagingStyle.extractMessagingStyleFromNotification(existingNotification);
style.getMessages();