浏览 SDKs · Android
平台
SDKsAndroid

搜索消息

使用 searchLocalMessages 搜索当前账号已同步到本地的消息。

复制

searchLocalMessages() 搜索当前账号已经同步到本设备的消息,不会请求业务后端的全局索引。可以限定会话、关键词、发送者、消息类型和时间范围;conversationID 传 null 时搜索全部本地会话。

参数说明

参数类型是否必填说明
conversationIDString否限定会话;传 null 表示搜索全部本地会话。
keywordListList<String>是非空关键词列表。
keywordListMatchTypeint是关键词匹配方式;按 SDK 枚举选择全部匹配或任一匹配。
senderUserIDListList<String>否只搜索这些用户发送的消息;不限制时传空列表。
messageTypeListList<Integer>否只搜索指定消息类型;不限制时传空列表。
searchTimePositionint是搜索时间起点;0 表示不限定起点。
searchTimePeriodint是从起点向过去搜索的秒数;0 表示不限制时间范围。
pageIndexint是页码,第一页传 0。
countint是每页最多返回的结果数。
OpenIMClient.getInstance().messageManager.searchLocalMessages(
    new OnBase<SearchResult>() {
        @Override
        public void onSuccess(SearchResult result) {
            // result.getSearchResultItems() 按会话组织匹配消息。
        }

        @Override
        public void onError(int code, String error) {
            // 保留原搜索结果并提示失败。
        }
    },
    conversationID,
    keywords,
    1,
    senderIDs,
    messageTypes,
    0,
    0,
    0,
    20
);

返回结果

成功回调返回 SearchResult。totalCount 是匹配消息总数,searchResultItems 按会话提供 conversationID、显示名称、头像、匹配数量和消息列表。搜索结果仅用于当前查询界面,不应覆盖会话中的完整消息列表,也不会触发消息事件。