tencent cloud

即时通信 IM

Android(Compose)

下载
聚焦模式
字号
最后更新时间: 2026-06-03 17:48:00
本文会引导您在 TUIKit Compose 上实现搜索。
注意:
“本地搜索”为 Chat 专业版、专业版 Plus、企业版功能,购买专业版、专业版 Plus、企业版 后可使用。

开发环境要求

Android Studio Arctic Fox (2020.3.1) 及以上
Android SDK API Level 21 (Android 5.0) 及以上

前置条件

在构建界面之前,请确保您已经完成了以下 4 件事:
1. 在控制台创建了一个应用。
2. 在控制台创建了至少 2 个用户账号。
3. 集成了 TUIKit Android Compose
4. 调用 LoginStorelogin 接口登录组件。
注意:
1. 每次启动应用,登录一次即可。
2. 请确保登录成功,我们建议您在登录成功的回调里进行下文的操作。
如果您尚未完成以上 4 步,请先参考 快速开始 中的对应步骤完成。

步骤说明

本地搜索界面由 SearchScreen 这个 @Composable 组件实现。建议在体验搜索功能前,本地制造一些业务数据,例如联系人、消息、群聊,否则搜不到任何信息。
注意,如果你直接使用我们的示例代码,需要预填充这几个参数:
sdkAppID,上文获取到的 sdkAppID。
userID,操作者的 userID,也就是 快速开始 中创建的 user1。
userSig,操作者的 userSig,也就是 快速开始 中创建的 user1 的 userSig。
App 启动即加载搜索界面,在 SearchScreen 中输入搜索词触发搜索,示例代码如下:
// SearchDemoActivity.kt
import android.content.Intent
import android.os.Bundle
import android.view.WindowManager
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.ui.Modifier
import io.trtc.tuikit.atomicx.basecomponent.theme.LocalTheme
import io.trtc.tuikit.atomicx.search.ui.SearchScreen
import io.trtc.tuikit.atomicxcore.api.CompletionHandler
import io.trtc.tuikit.atomicxcore.api.login.LoginStore

class SearchDemoActivity : AppCompatActivity() {

private val sdkAppID: Int = 1234567890 // TODO: Fill in the sdkAppID here
private val userID = "" // TODO: Fill in your userID here
private val userSig = "" // TODO: Fill in your generated userSig here

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE or
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
)
login()
}

private fun login() {
LoginStore.shared.login(this, sdkAppID, userID, userSig, object : CompletionHandler {
override fun onSuccess() {
showSearchPage()
}
override fun onFailure(code: Int, desc: String) {
// Handle login failure
}
})
}

private fun showSearchPage() {
setContent {
val colors = LocalTheme.current.colors

SearchScreen(
modifier = Modifier
.background(colors.bgColorOperate)
.fillMaxSize()
.statusBarsPadding()
.navigationBarsPadding(),
onBack = { finish() },
onContactSelect = { friendSearchInfo ->
// Handle friend search result
val conversationID = "c2c_${friendSearchInfo.userID}"
// Navigate to chat page with conversationID
},
onGroupSelect = { groupSearchInfo ->
// Handle group search result
val conversationID = "group_${groupSearchInfo.groupID}"
// Navigate to chat page with conversationID
},
onConversationSelect = { messageSearchResultItem ->
// Handle conversation search result
val conversationID = messageSearchResultItem.conversationID
// Navigate to chat page with conversationID
},
onMessageSelect = { messageInfo ->
// Handle message search result (navigate to chat and locate message)
// Navigate to chat page with conversationID and locateMessage
}
)
}
}
}
运行效果如下:


常见问题

如何搜索富媒体消息?

富媒体消息包含文件、图片、语音、视频消息。
对于文件消息,界面通常显示文件名,因此创建时可以设置 fileName 参数,作为被搜索的内容,如果 fileName 不设置则会从 filePath 提取文件名,并且都会保存到本地和服务器。
而对于图片、语音、视频消息,界面通常显示缩略图或时长,可以指定消息类型做分类搜索,但不能通过关键字搜索。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈