| agora_chat_SDK
    3.8.2
    agorajavachatSDK | 
| Public Member Functions | |
| void | sendMessage (final ChatMessage msg) | 
| void | ackConversationRead (String conversationId) throws ChatException | 
| void | ackMessageRead (String to, String messageId) throws ChatException | 
| void | ackGroupMessageRead (String to, String messageId, String ext) throws ChatException | 
| void | recallMessage (ChatMessage message) throws ChatException | 
| void | aysncRecallMessage (final ChatMessage message, final CallBack callback) | 
| ChatMessage | getMessage (String messageId) | 
| Conversation | getConversation (String id) | 
| Conversation | getConversation (String id, ConversationType type) | 
| Conversation | getConversation (String username, ConversationType type, boolean createIfNotExists) | 
| void | markAllConversationsAsRead () | 
| int | getUnreadMsgsCount () | 
| int | getUnreadMessageCount () | 
| void | saveMessage (ChatMessage message) | 
| boolean | updateMessage (ChatMessage message) | 
| void | downloadAttachment (final ChatMessage msg) | 
| void | downloadThumbnail (final ChatMessage msg) | 
| synchronized void | importMessages (List< ChatMessage > msgs) | 
| List< Conversation > | getConversationsByType (ConversationType type) | 
| void | downloadFile (final String remoteUrl, final String localFilePath, final Map< String, String > headers, final CallBack callback) | 
| Map< String, Conversation > | getAllConversations () | 
| Map< String, Conversation > | fetchConversationsFromServer () throws ChatException | 
| void | asyncFetchConversationsFromServer (final ValueCallBack< Map< String, Conversation >> callBack) | 
| void | loadAllConversations () | 
| boolean | deleteConversation (String username, boolean deleteMessages) | 
| void | addMessageListener (MessageListener listener) | 
| void | removeMessageListener (MessageListener listener) | 
| void | addConversationListener (ConversationListener listener) | 
| void | removeConversationListener (ConversationListener listener) | 
| void | setMessageListened (ChatMessage message) | 
| void | setVoiceMessageListened (ChatMessage message) | 
| boolean | updateParticipant (String from, String changeTo) | 
| CursorResult< GroupReadAck > | fetchGroupReadAcks (String msgId, int pageSize, String startAckId) throws ChatException | 
| void | asyncFetchGroupReadAcks (final String msgId, final int pageSize, final String startAckId, final ValueCallBack< CursorResult< GroupReadAck >> callBack) | 
| CursorResult< ChatMessage > | fetchHistoryMessages (String conversationId, ConversationType type, int pageSize, String startMsgId) throws ChatException | 
| void | asyncFetchHistoryMessage (final String conversationId, final ConversationType type, final int pageSize, final String startMsgId, final ValueCallBack< CursorResult< ChatMessage >> callBack) | 
| List< ChatMessage > | searchMsgFromDB (ChatMessage.Type type, long timeStamp, int maxCount, String from, Conversation.SearchDirection direction) | 
| List< ChatMessage > | searchMsgFromDB (String keywords, long timeStamp, int maxCount, String from, Conversation.SearchDirection direction) | 
| Protected Member Functions | |
| ChatManager (ChatClient client, EMAChatManager manager) | |
Chat manager, responsible for managing conversations (such as: load, delete), sending messages, downloading attachments and so on Such as, send a text message:
    ChatMessage message = ChatMessage.createTxtSendMessage(content, toChatUsername);
    ChatClient.getInstance().chatManager().sendMessage(message);
 | void io.agora.chat.ChatManager.ackConversationRead | ( | String | conversationId | ) | throws ChatException | 
Send read conversation ack to server, only for single chat conversation Send it will inform the sever set the conversation reading to 0, and conversationist (with multiple devices) will receive a callback method ConversationListener#onConversationRead(String, String)
Send group message ack to sever, see ackGroupMessageRead(String, String, String)
Suggestion: the method can be called when enter the chat page, other session can call the method of ackMessageRead(String, String) , can reduce the number of call to ackMessageRead(String, String) when there are a large number of unread messages
| conversationId | Conversation id | 
| ChatException | Maybe throws exception Error#USER_NOT_LOGIN, Error#SERVER_NOT_REACHABLE, Error#MESSAGE_INVALID and so on, see Error | 
| void io.agora.chat.ChatManager.ackGroupMessageRead | ( | String | to, | 
| String | messageId, | ||
| String | ext | ||
| ) | throws ChatException | 
Send group message ack to server Precondition: set ChatOptions#setRequireAck(boolean) and ChatMessage#setIsNeedGroupAck(boolean)
Send single chat message ack to server, see ackMessageRead(String, String); Send conversation ack to server, see ackConversationRead(String)
| void io.agora.chat.ChatManager.ackMessageRead | ( | String | to, | 
| String | messageId | ||
| ) | throws ChatException | 
Send read ack to server, only for single chat Precondition: set ChatOptions#setRequireAck(boolean)
Send group message ack to sever, see ackGroupMessageRead(String, String, String)
Suggestion: calls ackConversationRead(String) on entering a chat page, then calls the current method in other scenarios, can reduce the times this method is called.
| to | the recipient id | 
| messageId | message id | 
| ChatException | 
| void io.agora.chat.ChatManager.addConversationListener | ( | ConversationListener | listener | ) | 
Add conversation listener
| listener | The conversation listener will to be set, see ConversationListener | 
| void io.agora.chat.ChatManager.addMessageListener | ( | MessageListener | listener | ) | 
Add message listener Receives new messages and so on can set the method to listen, see MessageListener
| listener | The message listener which is used to listen the incoming messages, see MessageListener | 
| void io.agora.chat.ChatManager.asyncFetchConversationsFromServer | ( | final ValueCallBack< Map< String, Conversation >> | callBack | ) | 
Fetch conversations from server Default maximum return is 100.
Asynchronously method
| void io.agora.chat.ChatManager.asyncFetchGroupReadAcks | ( | final String | msgId, | 
| final int | pageSize, | ||
| final String | startAckId, | ||
| final ValueCallBack< CursorResult< GroupReadAck >> | callBack | ||
| ) | 
Fetch ack details for group messages from server Fetch by page Send group ack, see ackConversationRead(String)
Asynchronously method
| msgId | The message id which need fetch receipt | 
| pageSize | The page size per time fetch group message receipt | 
| startAckId | The start id for fetch acks, can be null, if null start from the server lastest ack. | 
| callBack | Result callback, success execute the method ValueCallBack#onSuccess(Object), failure execute the method ValueCallBack#onError(int, String) | 
| void io.agora.chat.ChatManager.asyncFetchHistoryMessage | ( | final String | conversationId, | 
| final ConversationType | type, | ||
| final int | pageSize, | ||
| final String | startMsgId, | ||
| final ValueCallBack< CursorResult< ChatMessage >> | callBack | ||
| ) | 
Fetch conversation roam messages from server Fetch by page
Asynchronously method
| conversationId | The conversation id which select to fetch roam message. | 
| type | The conversation type which select to fetch roam message. | 
| pageSize | Number fetched per time | 
| startMsgId | The start search roam message, if empty start from the server lastest message. | 
| callBack | Result callback, success execute the method ValueCallBack#onSuccess(Object), return messages from server and cursor for next fetch action; failue execute the method ValueCallBack#onError(int, String) | 
| void io.agora.chat.ChatManager.aysncRecallMessage | ( | final ChatMessage | message, | 
| final CallBack | callback | ||
| ) | 
Recall the sent message
Asynchronously method
| message | Message object | 
| callback | Send callback, see CallBack | 
| boolean io.agora.chat.ChatManager.deleteConversation | ( | String | username, | 
| boolean | deleteMessages | ||
| ) | 
Delete conversation and messages from local database If set true for deleteMessages, delete the local chat history when delete the conversation
| username | Conversation ID | 
| deleteMessages | Whether delete chat history when delete conversation | 
| void io.agora.chat.ChatManager.downloadAttachment | ( | final ChatMessage | msg | ) | 
Download the message attachment Call the method if the attachment download fails
| msg | Message to be download the attachment | 
| void io.agora.chat.ChatManager.downloadFile | ( | final String | remoteUrl, | 
| final String | localFilePath, | ||
| final Map< String, String > | headers, | ||
| final CallBack | callback | ||
| ) | 
Download the file from server
| remoteUrl | The remote file url | 
| localFilePath | The local file path | 
| headers | Http Request Headers | 
| callback | Download status callback, see CallBack | 
| void io.agora.chat.ChatManager.downloadThumbnail | ( | final ChatMessage | msg | ) | 
Download the thumbnail if not downloaded before or downloaded failed
| msg | The message to be downloaded thumbnail | 
| Map<String, Conversation> io.agora.chat.ChatManager.fetchConversationsFromServer | ( | ) | throws ChatException | 
Fetch conversations from server, Default maximum return is 100.
Synchronization method will block the current thread
| CursorResult<GroupReadAck> io.agora.chat.ChatManager.fetchGroupReadAcks | ( | String | msgId, | 
| int | pageSize, | ||
| String | startAckId | ||
| ) | throws ChatException | 
Fetch ack details for group messages from server. Fetch by page Send group ack, see ackConversationRead(String)
Synchronization method will block the current thread
| msgId | The message id which need fetch receipt | 
| pageSize | The page size per time fetch group message receipt | 
| startAckId | The start id for fetch acks, can be null, if null start from the server lastest ack. | 
| CursorResult<ChatMessage> io.agora.chat.ChatManager.fetchHistoryMessages | ( | String | conversationId, | 
| ConversationType | type, | ||
| int | pageSize, | ||
| String | startMsgId | ||
| ) | throws ChatException | 
Fetch conversation roam messages from server Fetch by page
Synchronization method will block the current thread
| conversationId | The conversation id which select to fetch roam message | 
| type | The conversation type which select to fetch roam message, see ConversationType | 
| pageSize | Number fetched per time | 
| startMsgId | The start search roam message, if empty start from the server lastest message. | 
| Map<String, Conversation> io.agora.chat.ChatManager.getAllConversations | ( | ) | 
Get all conversations from local Load from memory first, if not then load from local database
| Conversation io.agora.chat.ChatManager.getConversation | ( | String | id | ) | 
Get conversation object by the specified ID Return null if not find
| id | Conversation ID | 
| Conversation io.agora.chat.ChatManager.getConversation | ( | String | id, | 
| ConversationType | type | ||
| ) | 
Get conversation by conversation id and conversation type Return null if not find
| id | Conversation ID | 
| type | The conversation type, see ConversationType | 
| Conversation io.agora.chat.ChatManager.getConversation | ( | String | username, | 
| ConversationType | type, | ||
| boolean | createIfNotExists | ||
| ) | 
Get conversation object by conversation id and conversation type If not find, either a new object or an empty object is returned based on the value of CreateIFNotExists
| username | Conversation ID | 
| type | The conversation type, see ConversationType | 
| createIfNotExists | Whether Create conversation by the value if not find | 
| List<Conversation> io.agora.chat.ChatManager.getConversationsByType | ( | ConversationType | type | ) | 
Get list of conversations by conversation type
| type | The conversation type, see ConversationType | 
| ChatMessage io.agora.chat.ChatManager.getMessage | ( | String | messageId | ) | 
get message through message id
| messageId | message id | 
| int io.agora.chat.ChatManager.getUnreadMessageCount | ( | ) | 
Get unread message count
| int io.agora.chat.ChatManager.getUnreadMsgsCount | ( | ) | 
Get unread message count
| synchronized void io.agora.chat.ChatManager.importMessages | ( | List< ChatMessage > | msgs | ) | 
Import messages to local database. Make sure the message's sender or receiver is current user Recommend import up to 1000 messages per operation
| msgs | The message list of be imported | 
| void io.agora.chat.ChatManager.loadAllConversations | ( | ) | 
Load all conversations from local database into memory Generally used after a successful login to speed up the loading of the conversation list
| void io.agora.chat.ChatManager.markAllConversationsAsRead | ( | ) | 
mark all messages as read For local conversations
| void io.agora.chat.ChatManager.recallMessage | ( | ChatMessage | message | ) | throws ChatException | 
Recall the sent message
Synchronization method block the current thread
| message | Message object | 
| ChatException | See Error | 
| void io.agora.chat.ChatManager.removeConversationListener | ( | ConversationListener | listener | ) | 
Remove the conversation listener After set addConversationListener(ConversationListener) need to remove the listener by calls this method
| listener | the conversation listener set before | 
| void io.agora.chat.ChatManager.removeMessageListener | ( | MessageListener | listener | ) | 
Remove the message listener After set addMessageListener(MessageListener) should calls this method
| listener | The message listener set before need to remove | 
| void io.agora.chat.ChatManager.saveMessage | ( | ChatMessage | message | ) | 
Save the message to memory and local database CMD type message not be stored in database
| message | The emssage to store | 
| List<ChatMessage> io.agora.chat.ChatManager.searchMsgFromDB | ( | ChatMessage.Type | type, | 
| long | timeStamp, | ||
| int | maxCount, | ||
| String | from, | ||
| Conversation.SearchDirection | direction | ||
| ) | 
Search message from database according the parameters Note: Cautious about memory usage when the maxCount is large, currently the limited number of search data is 400 at a time
| type | Message type, TXT、VOICE、IMAGE and so on, see ChatMessage.Type | 
| timeStamp | The timestamp for search | 
| maxCount | The max number of message to search | 
| from | A user id or a group id searches for messages, usually refers to the conversation ID | 
| List<ChatMessage> io.agora.chat.ChatManager.searchMsgFromDB | ( | String | keywords, | 
| long | timeStamp, | ||
| int | maxCount, | ||
| String | from, | ||
| Conversation.SearchDirection | direction | ||
| ) | 
Search message from database based the parameters Note: Cautious about memory usage when the maxCount is large, currently the limited number of search data is 400 at a time
| keywords | The keywords in message. | 
| timeStamp | The timestamp for search | 
| maxCount | The max number of message to search | 
| from | A user id or a group id searches for messages, usually refers to the conversation ID | 
| void io.agora.chat.ChatManager.sendMessage | ( | final ChatMessage | msg | ) | 
Send message If is voice, picture and other message with attachment, SDK will automatically upload the attachment Can set whether upload to chat sever by ChatOptions#setAutoTransferMessageAttachments(boolean), the default value is true The send message status, can set listener by ChatMessage#setMessageStatusCallback(CallBack), we should set it before the method of sendMessage(), otherwise the listener may be recycled by the system
| msg | Message object to be sent, not be null | 
| void io.agora.chat.ChatManager.setMessageListened | ( | ChatMessage | message | ) | 
Set message to listened, used for voice message
| message | The message object to set | 
| void io.agora.chat.ChatManager.setVoiceMessageListened | ( | ChatMessage | message | ) | 
Set message to listened, used for voice message
| message | The message object to set | 
| boolean io.agora.chat.ChatManager.updateMessage | ( | ChatMessage | message | ) | 
Update the local message Update the memory and local database
| message | The message objec to update | 
| boolean io.agora.chat.ChatManager.updateParticipant | ( | String | from, | 
| String | changeTo | ||
| ) | 
Update database records, change username 'from' to 'changeTo', take effect on message table, conversation table, contacts, blacklist table Note: this operation does not update data stored in memory cache.
| from | The userId before replace | 
| changeTo | The userId after replace | 
 1.8.9
 1.8.9