android - 试图让 Android jabber 应用程序检查新消息中的字符串并返回 toast 消息

标签 android xmpp toast ejabberd instant-messaging

我已经能够创建用于检查字符串的 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/

相关文章:

delphi - Delphi 7 的 Jabber/XMPP 库

java - 如何使用 XMPP java 向用户发送聊天邀请?

java - 使用 Java Toast 调用非静态方法

android - 在非 Activity 类的 AsyncTask 中 toast

java - SQLite 无法在 OnCreate 方法中创建数据库。 E/SQLiteLog : (1)

java - 安卓图标电池

android - 如何从内核代码重启安卓手机

multithreading - 研究 XMPP 应用程序的线程实现的好资源是什么?

android - 在 Toast 中显示电话号码

java - Android中的ValueAnimator以及如何使其每秒增加一