2014-04-22 15 views
2

我已經能夠創建if語句來檢查字符串,並返回我創建的Toast消息,但它一直顯示每次我打開聊天時的敬酒信息。即使最近的消息不包含我正在查找的字符串,所以我假設它不檢查它是否是最後收到的消息,也不檢查它是否未讀。代碼如下。我試圖這樣做的原因是因爲我的父母共享一個Facebook帳戶,我想要一個簡單的方法來顯示,如果消息是簽署媽媽或爸爸。下面的代碼只有檢查媽媽一旦它的工作,我將添加檢查爸爸簽名。我正在使用開源消息客戶端Xabber。謝謝你的幫助。嘗試獲取Android Jabber應用程序以檢查新郵件中的字符串並返回Toast郵件

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; 
} 
+0

嗨,我也試圖獲得相同的Android XABER中的MessageItem的讀狀態。但messageItem.isRead()總是返回true,即使接收者沒有打開消息。你可以建議我,如果你對這個問題有任何想法 – Raj

+0

@Raj你應該發佈你的代碼,以便這個社區的人更好地理解什麼可能會出錯。前段時間我停止在這個項目中工作後,我的父母得到智能手機,他們設置個人FB賬戶,所以我沒有這個需要了。我相信當時我的工作幾乎完美,但沒有代碼了。發佈代碼,我會盡我所能來幫助你。 – user3561802

+0

嗨,我作爲一個單獨的問題更新了代碼片段的確切問題。以下是網址。 http://stackoverflow.com/questions/29776948/issue-with-android-xabbar-message-read-status – Raj

回答

1

你已經有了一個額外的分號這裏

if (chat.getLastText().contains("Mom") && (!messageItem.isRead())); <------ 

所以你的含吐司顯示語句代碼下一塊就一定會執行。

刪除分號

+0

謝謝你的及時迴應。不幸的是,現在的吐司並沒有出現,我猜我需要改變if語句正在檢查的內容。如果(chat.getLastText()一定不是正確的) – user3561802

+0

沒問題,你可以在調試模式下運行應用程序,並在代碼中設置一個斷點,這將允許你逐步查明問題的原因。我的回答對你有幫助,請至少補充一點,如果它幫助你解決了問題,請接受它。謝謝 –

+0

這確實有效,它仍然沒有檢查消息是否未讀。但是,它是更好的。我不能投票我沒有足夠的代表再次非常感謝你只需要在&&聲明。 – user3561802

相關問題