im::floo::floolib::BMXConversation

Conversation

Inherits from BMXBaseObject

Public Functions

Name
synchronized void delete()
long conversationId()
Conversation Id
BMXConversation.Type type()
Conversation type
BMXMessage lastMsg()
Latest message
int unreadNumber()
Number of unread messages
int messageCount()
Total number of messages in conversation
boolean isMuteNotification()
Whether the user is alerted to the message, without which the conversation total number of unread messages does not count this conversation.
String extension()
Extension information
[BMXErrorCode] setExtension(String ext)
Set the Extension information
String editMessage()
Edit message
[BMXErrorCode] setEditMessage(String editMessage)
Set the Edit Message
[BMXErrorCode] searchMessagesByKeyWords(String keywords, long refTime, long size, BMXMessageList result, BMXConversation.Direction arg4)
Search for messages, starting with latest if not specified
[BMXErrorCode] searchMessagesByKeyWords(String keywords, long refTime, long size, BMXMessageList result)
[BMXErrorCode] searchMessagesByType(BMXMessage.ContentType type, long refTime, long size, BMXMessageList result, BMXConversation.Direction arg4)
Search for messages by type, starting with latest if not specified
[BMXErrorCode] searchMessagesByType(BMXMessage.ContentType type, long refTime, long size, BMXMessageList result)
void setMessagePlayedStatus(final BMXMessage msg, final boolean status, final BMXCallBack callBack)
Set message playback state (valid only for voice/video messages)
void setMessageReadStatus(final BMXMessage msg, final boolean status, final BMXCallBack callBack)
Set message unread state, update unread message-number
void setAllMessagesRead(final BMXCallBack callBack)
Set all messages to read, update number of unread messages
void updateMessageExtension(final BMXMessage msg, final BMXCallBack callBack)
Update the extend field info of a database-stored message
void insertMessage(final BMXMessage msg, final BMXCallBack callBack)
Insert a message
void loadMessage(final long msgId, final BMXDataCallBack< BMXMessage > callBack)
Read a message
void removeAllMessages(final BMXCallBack callBack)
Delete all messages in sesstion
void loadMessages(final long refMsgId, final long size, final BMXConversation.Direction arg3, final BMXDataCallBack< BMXMessageList > callBack)
Load message, starting with latest if not specified
void loadMessages(final long refMsgId, final long size, final BMXDataCallBack< BMXMessageList > callBack)
void searchMessages(final String keywords, final long refTime, final long size, final BMXConversation.Direction arg4, final BMXDataCallBack< BMXMessageList > callBack)
Search for messages, starting with latest if not specified
void searchMessages(final String keywords, final long refTime, final long size, final BMXDataCallBack< BMXMessageList > callBack)
void searchMessages(final BMXMessage.ContentType type, final long refTime, final long size, final BMXConversation.Direction arg4, final BMXDataCallBack< BMXMessageList > callBack)
Search for messages by type, starting with latest if not specified
void searchMessages(final BMXMessage.ContentType type, final long refTime, final long size, final BMXDataCallBack< BMXMessageList > callBack)
void refreshConversation(final BMXCallBack callBack)
Read the total message-number from current conversation of the database, forces to update the total message-number and unread message-number.

Protected Functions

Name
BMXConversation(long cPtr, boolean cMemoryOwn)
void finalize()
long getCPtr(BMXConversation obj)

Public Functions Documentation

function delete

inline synchronized void delete()

Example:

function conversationId

inline long conversationId()

Conversation Id

Return: int64_t

Example:

TextView time = holder.findViewById(R.id.session_time);
TextView tvUnReadCount = holder.findViewById(R.id.session_unread_num);
ImageView ivDisturb = holder.findViewById(R.id.session_disturb);

BMXConversation item = getItem(position);
// 是否开启免打扰
boolean isDisturb = false;
BMXConversation.Type type = item == null ? null : item.type();
String name = "";
if (type != null && type == BMXConversation.Type.Single) {
    BMXRosterItem rosterItem = RosterFetcher.getFetcher().getRoster(item.conversationId());
    if (rosterItem != null && !TextUtils.isEmpty(rosterItem.alias())) {
        name = rosterItem.alias();
    } else if (rosterItem != null && !TextUtils.isEmpty(rosterItem.nickname())) {
        name = rosterItem.nickname();
    } else if (rosterItem != null) {
        name = rosterItem.username();
    }
    if (item.conversationId() == 0){
        name = mContext.getString(R.string.sys_msg);
String name = "";
if (type != null && type == BMXConversation.Type.Single) {
    BMXRosterItem rosterItem = RosterFetcher.getFetcher().getRoster(item.conversationId());
    if (rosterItem != null && !TextUtils.isEmpty(rosterItem.alias())) {
        name = rosterItem.alias();
    } else if (rosterItem != null && !TextUtils.isEmpty(rosterItem.nickname())) {
        name = rosterItem.nickname();
    } else if (rosterItem != null) {
        name = rosterItem.username();
    }
    if (item.conversationId() == 0){
        name = mContext.getString(R.string.sys_msg);
    }
    ChatUtils.getInstance().showRosterAvatar(rosterItem, avatar, mConfig);
    isDisturb = rosterItem != null && rosterItem.isMuteNotification();
} else if (type != null && type == BMXConversation.Type.Group) {
    BMXGroup groupItem = RosterFetcher.getFetcher().getGroup(item.conversationId());
    name = groupItem != null ? groupItem.name() : "";
    ChatUtils.getInstance().showGroupAvatar(groupItem, avatar, mGroupConfig);
    isDisturb = groupItem != null && groupItem.msgMuteMode() != null
        name = rosterItem.nickname();
    } else if (rosterItem != null) {
        name = rosterItem.username();
    }
    if (item.conversationId() == 0){
        name = mContext.getString(R.string.sys_msg);
    }
    ChatUtils.getInstance().showRosterAvatar(rosterItem, avatar, mConfig);
    isDisturb = rosterItem != null && rosterItem.isMuteNotification();
} else if (type != null && type == BMXConversation.Type.Group) {
    BMXGroup groupItem = RosterFetcher.getFetcher().getGroup(item.conversationId());
    name = groupItem != null ? groupItem.name() : "";
    ChatUtils.getInstance().showGroupAvatar(groupItem, avatar, mGroupConfig);
    isDisturb = groupItem != null && groupItem.msgMuteMode() != null
            && groupItem.msgMuteMode() == BMXGroup.MsgMuteMode.MuteChat;
} else {
    ChatUtils.getInstance().showRosterAvatar(null, avatar, mConfig);
}
BMXMessage lastMsg = item == null ? null : item.lastMsg();
int unReadCount = item == null ? 0 : item.unreadNumber();
@Override
public void setChatInfo(BMXMessage.MessageType chatType, final long myUserId, long chatId) {
    mChatType = chatType;
    mMyUserId = myUserId;
    mChatId = chatId;
    mSendUtils = new MessageSendUtils();
    if (mConversation == null || mConversation.conversationId() != chatId) {
        BMXDataCallBack<BMXConversation> callBack = (bmxErrorCode, bmxConversation) -> {
            if (BaseManager.bmxFinish(bmxErrorCode) && bmxConversation != null) {
                mConversation = bmxConversation;
                // 设置已读
                if (mConversation.unreadNumber() > 0) {
                    mConversation.setAllMessagesRead(null);
                }
                // 获取草稿
                if (mView != null) {
                    mView.setControlBarText(mConversation.editMessage());
                }
                initChatData(0);
    return;
}
ListOfLongLong rosterIds = new ListOfLongLong();
ListOfLongLong groupIds = new ListOfLongLong();
for (int i = 0; i < conversationList.size(); i++) {
    BMXConversation conversation = conversationList.get(i);
    if (conversation == null) {
        continue;
    }
    if (conversation.type() == BMXConversation.Type.Single) {
        if (RosterFetcher.getFetcher().getRoster(conversation.conversationId()) == null) {
            rosterIds.add(conversation.conversationId());
        }
    } else if (conversation.type() == BMXConversation.Type.Group) {
        if (RosterFetcher.getFetcher().getGroup(conversation.conversationId()) == null) {
            groupIds.add(conversation.conversationId());
        }
    }
}
if (!rosterIds.isEmpty()) {
}
ListOfLongLong rosterIds = new ListOfLongLong();
ListOfLongLong groupIds = new ListOfLongLong();
for (int i = 0; i < conversationList.size(); i++) {
    BMXConversation conversation = conversationList.get(i);
    if (conversation == null) {
        continue;
    }
    if (conversation.type() == BMXConversation.Type.Single) {
        if (RosterFetcher.getFetcher().getRoster(conversation.conversationId()) == null) {
            rosterIds.add(conversation.conversationId());
        }
    } else if (conversation.type() == BMXConversation.Type.Group) {
        if (RosterFetcher.getFetcher().getGroup(conversation.conversationId()) == null) {
            groupIds.add(conversation.conversationId());
        }
    }
}
if (!rosterIds.isEmpty()) {
    RosterManager.getInstance().getRosterList(rosterIds, true, (bmxErrorCode, itemList) -> {
for (int i = 0; i < conversationList.size(); i++) {
    BMXConversation conversation = conversationList.get(i);
    if (conversation == null) {
        continue;
    }
    if (conversation.type() == BMXConversation.Type.Single) {
        if (RosterFetcher.getFetcher().getRoster(conversation.conversationId()) == null) {
            rosterIds.add(conversation.conversationId());
        }
    } else if (conversation.type() == BMXConversation.Type.Group) {
        if (RosterFetcher.getFetcher().getGroup(conversation.conversationId()) == null) {
            groupIds.add(conversation.conversationId());
        }
    }
}
if (!rosterIds.isEmpty()) {
    RosterManager.getInstance().getRosterList(rosterIds, true, (bmxErrorCode, itemList) -> {
        if (BaseManager.bmxFinish(bmxErrorCode)) {
            RosterFetcher.getFetcher().putRosters(itemList);
            if (mAdapter != null) {
    BMXConversation conversation = conversationList.get(i);
    if (conversation == null) {
        continue;
    }
    if (conversation.type() == BMXConversation.Type.Single) {
        if (RosterFetcher.getFetcher().getRoster(conversation.conversationId()) == null) {
            rosterIds.add(conversation.conversationId());
        }
    } else if (conversation.type() == BMXConversation.Type.Group) {
        if (RosterFetcher.getFetcher().getGroup(conversation.conversationId()) == null) {
            groupIds.add(conversation.conversationId());
        }
    }
}
if (!rosterIds.isEmpty()) {
    RosterManager.getInstance().getRosterList(rosterIds, true, (bmxErrorCode, itemList) -> {
        if (BaseManager.bmxFinish(bmxErrorCode)) {
            RosterFetcher.getFetcher().putRosters(itemList);
            if (mAdapter != null) {
                mAdapter.notifyDataSetChanged();

function type

inline BMXConversation.Type type()

Conversation type

Return: [Type]

Example:

ShapeImageView avatar = holder.findViewById(R.id.session_avatar);
TextView tvTitle = holder.findViewById(R.id.session_title);
TextView desc = holder.findViewById(R.id.session_desc);
TextView time = holder.findViewById(R.id.session_time);
TextView tvUnReadCount = holder.findViewById(R.id.session_unread_num);
ImageView ivDisturb = holder.findViewById(R.id.session_disturb);

BMXConversation item = getItem(position);
// 是否开启免打扰
boolean isDisturb = false;
BMXConversation.Type type = item == null ? null : item.type();
String name = "";
if (type != null && type == BMXConversation.Type.Single) {
    BMXRosterItem rosterItem = RosterFetcher.getFetcher().getRoster(item.conversationId());
    if (rosterItem != null && !TextUtils.isEmpty(rosterItem.alias())) {
        name = rosterItem.alias();
    } else if (rosterItem != null && !TextUtils.isEmpty(rosterItem.nickname())) {
        name = rosterItem.nickname();
    } else if (rosterItem != null) {
        name = rosterItem.username();
if (conversationList == null || conversationList.isEmpty()) {
    return;
}
ListOfLongLong rosterIds = new ListOfLongLong();
ListOfLongLong groupIds = new ListOfLongLong();
for (int i = 0; i < conversationList.size(); i++) {
    BMXConversation conversation = conversationList.get(i);
    if (conversation == null) {
        continue;
    }
    if (conversation.type() == BMXConversation.Type.Single) {
        if (RosterFetcher.getFetcher().getRoster(conversation.conversationId()) == null) {
            rosterIds.add(conversation.conversationId());
        }
    } else if (conversation.type() == BMXConversation.Type.Group) {
        if (RosterFetcher.getFetcher().getGroup(conversation.conversationId()) == null) {
            groupIds.add(conversation.conversationId());
        }
    }
ListOfLongLong groupIds = new ListOfLongLong();
for (int i = 0; i < conversationList.size(); i++) {
    BMXConversation conversation = conversationList.get(i);
    if (conversation == null) {
        continue;
    }
    if (conversation.type() == BMXConversation.Type.Single) {
        if (RosterFetcher.getFetcher().getRoster(conversation.conversationId()) == null) {
            rosterIds.add(conversation.conversationId());
        }
    } else if (conversation.type() == BMXConversation.Type.Group) {
        if (RosterFetcher.getFetcher().getGroup(conversation.conversationId()) == null) {
            groupIds.add(conversation.conversationId());
        }
    }
}
if (!rosterIds.isEmpty()) {
    RosterManager.getInstance().getRosterList(rosterIds, true, (bmxErrorCode, itemList) -> {
        if (BaseManager.bmxFinish(bmxErrorCode)) {
            RosterFetcher.getFetcher().putRosters(itemList);

function lastMsg

inline BMXMessage lastMsg()

Latest message

Return: BMXMessagePtr

Example:

    isDisturb = rosterItem != null && rosterItem.isMuteNotification();
} else if (type != null && type == BMXConversation.Type.Group) {
    BMXGroup groupItem = RosterFetcher.getFetcher().getGroup(item.conversationId());
    name = groupItem != null ? groupItem.name() : "";
    ChatUtils.getInstance().showGroupAvatar(groupItem, avatar, mGroupConfig);
    isDisturb = groupItem != null && groupItem.msgMuteMode() != null
            && groupItem.msgMuteMode() == BMXGroup.MsgMuteMode.MuteChat;
} else {
    ChatUtils.getInstance().showRosterAvatar(null, avatar, mConfig);
}
BMXMessage lastMsg = item == null ? null : item.lastMsg();
int unReadCount = item == null ? 0 : item.unreadNumber();
if (isDisturb) {
    tvUnReadCount.setVisibility(View.GONE);
    ivDisturb.setVisibility(unReadCount > 0 ? View.VISIBLE : View.GONE);
} else {
    ivDisturb.setVisibility(View.GONE);
    if (unReadCount > 0) {
        tvUnReadCount.setVisibility(View.VISIBLE);
        tvUnReadCount.setText(String.valueOf(unReadCount));

function unreadNumber

inline int unreadNumber()

Number of unread messages

Return: int32_t

Example:

} else if (type != null && type == BMXConversation.Type.Group) {
    BMXGroup groupItem = RosterFetcher.getFetcher().getGroup(item.conversationId());
    name = groupItem != null ? groupItem.name() : "";
    ChatUtils.getInstance().showGroupAvatar(groupItem, avatar, mGroupConfig);
    isDisturb = groupItem != null && groupItem.msgMuteMode() != null
            && groupItem.msgMuteMode() == BMXGroup.MsgMuteMode.MuteChat;
} else {
    ChatUtils.getInstance().showRosterAvatar(null, avatar, mConfig);
}
BMXMessage lastMsg = item == null ? null : item.lastMsg();
int unReadCount = item == null ? 0 : item.unreadNumber();
if (isDisturb) {
    tvUnReadCount.setVisibility(View.GONE);
    ivDisturb.setVisibility(unReadCount > 0 ? View.VISIBLE : View.GONE);
} else {
    ivDisturb.setVisibility(View.GONE);
    if (unReadCount > 0) {
        tvUnReadCount.setVisibility(View.VISIBLE);
        tvUnReadCount.setText(String.valueOf(unReadCount));
    } else {
    };
    if (chatType != null && chatType == BMXMessage.MessageType.Single) {
        ChatManager.getInstance().openConversation(chatId, BMXConversation.Type.Single,
                true, callBack);
    } else if (chatType != null && chatType == BMXMessage.MessageType.Group) {
        ChatManager.getInstance().openConversation(chatId, BMXConversation.Type.Group, true,
                callBack);
    }
} else {
    // 设置已读
    if (mConversation.unreadNumber() > 0) {
        mConversation.setAllMessagesRead(null);
    }
    // 获取草稿
    if (mView != null) {
        mView.setControlBarText(mConversation.editMessage());
    }
    initChatData(0);
}
UserManager.getInstance().getProfile(false, (bmxErrorCode, bmxUserProfile) -> {
if (mConversation.unreadNumber() > 0) {

function messageCount

inline int messageCount()

Total number of messages in conversation

Return: int32_t

Example:

function isMuteNotification

inline boolean isMuteNotification()

Whether the user is alerted to the message, without which the conversation total number of unread messages does not count this conversation.

Return: bool

Example:

function extension

inline String extension()

Extension information

Return: JSON(std::string)

Example:

function setExtension

inline BMXErrorCode setExtension(
    String ext
)

Set the Extension information

Parameters:

  • ext Conversation extension message

Return: [BMXErrorCode]

Example:

function editMessage

inline String editMessage()

Edit message

Return: std::string

Example:

    ivDisturb.setVisibility(View.GONE);
    if (unReadCount > 0) {
        tvUnReadCount.setVisibility(View.VISIBLE);
        tvUnReadCount.setText(String.valueOf(unReadCount));
    } else {
        tvUnReadCount.setVisibility(View.GONE);
    }
}
tvTitle.setText(TextUtils.isEmpty(name) ? "" : name);
time.setText(lastMsg != null ? TimeUtils.millis2StringOnConversationList(mContext, lastMsg.serverTimestamp()) : "");
String draft = item == null ? "" : item.editMessage();
if (!TextUtils.isEmpty(draft)) {
    // 有草稿
    SpannableStringBuilder spannable = new SpannableStringBuilder();
    String draftText = mContext.getString(R.string.draft);
    SpannableString spannableString = new SpannableString(draftText);
    spannableString.setSpan(new ForegroundColorSpan(Color.RED), 0, draftText.length(),
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannable.append(spannableString).append(draft);
    desc.setText(spannable);
        ChatManager.getInstance().openConversation(chatId, BMXConversation.Type.Group, true,
                callBack);
    }
} else {
    // 设置已读
    if (mConversation.unreadNumber() > 0) {
        mConversation.setAllMessagesRead(null);
    }
    // 获取草稿
    if (mView != null) {
        mView.setControlBarText(mConversation.editMessage());
    }
    initChatData(0);
}
UserManager.getInstance().getProfile(false, (bmxErrorCode, bmxUserProfile) -> {
    if (BaseManager.bmxFinish(bmxErrorCode)) {
        myUserName = bmxUserProfile == null ? "" : bmxUserProfile.username();
    }
});
mView.setControlBarText(mConversation.editMessage());

function setEditMessage

inline BMXErrorCode setEditMessage(
    String editMessage
)

Set the Edit Message

Parameters:

  • editMessage Text message being edited by conversation

Return: [BMXErrorCode]

Example:

@Override
public void onPause() {
    stopAudio();
    // 聊天页面返回需要更新会话的草稿
    if (mConversation != null) {
        mConversation.setEditMessage(mView == null ? "" : mView.getControlBarText());
    }
    // 同步未读
    readAllMessage();

function searchMessagesByKeyWords

inline BMXErrorCode searchMessagesByKeyWords(
    String keywords,
    long refTime,
    long size,
    BMXMessageList result,
    BMXConversation.Direction arg4
)

Search for messages, starting with latest if not specified

Parameters:

  • keywords Keyword for search message
  • refTime Start time of message search
  • size Maximum number of searched messages
  • result List of searched message results
  • arg4 Message search direction, default (Direction::Up)means search from earlier messages.

Return: [BMXErrorCode]

Example:

function searchMessagesByKeyWords

inline BMXErrorCode searchMessagesByKeyWords(
    String keywords,
    long refTime,
    long size,
    BMXMessageList result
)

Example:

function searchMessagesByType

inline BMXErrorCode searchMessagesByType(
    BMXMessage.ContentType type,
    long refTime,
    long size,
    BMXMessageList result,
    BMXConversation.Direction arg4
)

Search for messages by type, starting with latest if not specified

Parameters:

  • type Type of search message
  • refTime Start time of message search
  • size Maximum number of searched messages
  • result List of searched message results
  • arg4 Message search direction, default (Direction::Up)means search from earlier messages.

Return: [BMXErrorCode]

Example:

function searchMessagesByType

inline BMXErrorCode searchMessagesByType(
    BMXMessage.ContentType type,
    long refTime,
    long size,
    BMXMessageList result
)

Example:

function setMessagePlayedStatus

inline void setMessagePlayedStatus(
    final BMXMessage msg,
    final boolean status,
    final BMXCallBack callBack
)

Set message playback state (valid only for voice/video messages)

Parameters:

  • msg Message for which playback state needs to be set
  • status Whether the message has been played
  • callBack Callback

Example:

function setMessageReadStatus

inline void setMessageReadStatus(
    final BMXMessage msg,
    final boolean status,
    final BMXCallBack callBack
)

Set message unread state, update unread message-number

Parameters:

  • msg Message for which the read state needs to be set
  • status Whether the message is set to read
  • callBack Callback

Example:

function setAllMessagesRead

inline void setAllMessagesRead(
    final BMXCallBack callBack
)

Set all messages to read, update number of unread messages

Parameters:

  • callBack Callback

Example:

    if (chatType != null && chatType == BMXMessage.MessageType.Single) {
        ChatManager.getInstance().openConversation(chatId, BMXConversation.Type.Single,
                true, callBack);
    } else if (chatType != null && chatType == BMXMessage.MessageType.Group) {
        ChatManager.getInstance().openConversation(chatId, BMXConversation.Type.Group, true,
                callBack);
    }
} else {
    // 设置已读
    if (mConversation.unreadNumber() > 0) {
        mConversation.setAllMessagesRead(null);
    }
    // 获取草稿
    if (mView != null) {
        mView.setControlBarText(mConversation.editMessage());
    }
    initChatData(0);
}
UserManager.getInstance().getProfile(false, (bmxErrorCode, bmxUserProfile) -> {
    if (BaseManager.bmxFinish(bmxErrorCode)) {
mConversation.setAllMessagesRead(null);

function updateMessageExtension

inline void updateMessageExtension(
    final BMXMessage msg,
    final BMXCallBack callBack
)

Update the extend field info of a database-stored message

Parameters:

  • msg The message that needs to change the extension information when the msg section has updated its extension field
  • callBack Callback

Example:

function insertMessage

inline void insertMessage(
    final BMXMessage msg,
    final BMXCallBack callBack
)

Insert a message

Parameters:

  • msg Inserted message
  • callBack Callback

Example:

function loadMessage

inline void loadMessage(
    final long msgId,
    final BMXDataCallBack< BMXMessage > callBack
)

Read a message

Parameters:

  • msgId Message id of the message to read
  • callBack Callback

Example:

function removeAllMessages

inline void removeAllMessages(
    final BMXCallBack callBack
)

Delete all messages in sesstion

Parameters:

  • callBack Callback

Example:

function loadMessages

inline void loadMessages(
    final long refMsgId,
    final long size,
    final BMXConversation.Direction arg3,
    final BMXDataCallBack< BMXMessageList > callBack
)

Load message, starting with latest if not specified

Parameters:

  • refMsgId Start id of the message to load
  • size Maximum number of searched messages
  • arg3 Message loading direction, default to load earlier messages
  • callBack Callback

Example:

mConversation.loadMessages(msgId, MessageConfig.DEFAULT_PAGE_SIZE,
mConversation.loadMessages(msgId, MessageConfig.DEFAULT_PAGE_SIZE,

function loadMessages

inline void loadMessages(
    final long refMsgId,
    final long size,
    final BMXDataCallBack< BMXMessageList > callBack
)

Example:

mConversation.loadMessages(msgId, MessageConfig.DEFAULT_PAGE_SIZE,
mConversation.loadMessages(msgId, MessageConfig.DEFAULT_PAGE_SIZE,

function searchMessages

inline void searchMessages(
    final String keywords,
    final long refTime,
    final long size,
    final BMXConversation.Direction arg4,
    final BMXDataCallBack< BMXMessageList > callBack
)

Search for messages, starting with latest if not specified

Parameters:

  • keywords Keyword for search message
  • refTime Start time of message search
  • size Maximum number of searched messages
  • arg4 Message search direction, default (Direction::Up)means search from earlier messages.
  • callBack Callback

Example:

function searchMessages

inline void searchMessages(
    final String keywords,
    final long refTime,
    final long size,
    final BMXDataCallBack< BMXMessageList > callBack
)

Example:

function searchMessages

inline void searchMessages(
    final BMXMessage.ContentType type,
    final long refTime,
    final long size,
    final BMXConversation.Direction arg4,
    final BMXDataCallBack< BMXMessageList > callBack
)

Search for messages by type, starting with latest if not specified

Parameters:

  • type Type of search message
  • refTime Start time of message search
  • size Maximum number of searched messages
  • arg4 Message search direction, default (Direction::Up)means search from earlier messages.
  • callBack Callback

Example:

function searchMessages

inline void searchMessages(
    final BMXMessage.ContentType type,
    final long refTime,
    final long size,
    final BMXDataCallBack< BMXMessageList > callBack
)

Example:

function refreshConversation

inline void refreshConversation(
    final BMXCallBack callBack
)

Read the total message-number from current conversation of the database, forces to update the total message-number and unread message-number.

Parameters:

  • callBack Callback

Protected Functions Documentation

Example:

function BMXConversation

inline BMXConversation(
    long cPtr,
    boolean cMemoryOwn
)

Example:

function finalize

inline void finalize()

Example:

function getCPtr

static inline long getCPtr(
    BMXConversation obj
)

Example:


Updated on 2022-01-26 at 17:18:31 +0800

© 2019-2023 MaximTop | Homepage Last modified time: 2023-08-09 14:48:15

results matching ""

    No results matching ""