我已经能够创建用于检查字符串的 if 语句,它会返回我创建的 toast 消息,但每次我打开聊天时它都会显示 toast 消息。即使最近的消息不包含我正在寻找的字符串,所以我假设它不会检查它是否是收到的最后一条消息,也不会检查它是否未读。代码如下。我尝试这样做的原因是因为我的 parent 共享一个 facebook 帐户,我想要一种简单的方法来显示消息是妈妈还是爸爸签名的。下面的代码只有妈妈的支票,一旦它工作我将添加爸爸签名的支票。我正在使用开源消息客户端 Xabber。感谢您的帮助。
public void setVisibleChat(String account, String user) {
final boolean remove = !AccountManager.getInstance()
.getArchiveMode(account).saveLocally();
AbstractChat chat = getChat(account, user);
if (chat == null)
chat = createChat(account, user);
else {
// Mark messages as read and them delete from db if necessary.
final ArrayList<MessageItem> messageItems = new ArrayList<MessageItem>();
for (MessageItem messageItem : chat.getMessages()) {
if (!messageItem.isRead()) {
messageItem.markAsRead();
messageItems.add(messageItem);
}
if (chat.getLastText().contains("Mom") && (!messageItem.isRead()));{
Toast.makeText(Application.getInstance(), "Message from Mom!", Toast.LENGTH_SHORT).show();
}
}
Application.getInstance().runInBackground(new Runnable() {
@Override
public void run() {
Collection<Long> ids = getMessageIds(messageItems, remove);
if (remove)
MessageTable.getInstance().removeMessages(ids);
else
MessageTable.getInstance().markAsRead(ids);
}
});
}
visibleChat = chat;
}
最佳答案
这里多了一个分号
if (chat.getLastText().contains("Mom") && (!messageItem.isRead())); <------
因此您的下一个包含 Toast show 语句的代码块将始终被执行。
去掉分号
关于android - 试图让 Android jabber 应用程序检查新消息中的字符串并返回 toast 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23229423/