Android(Compose)
本文会引导您在 TUIKit Compose 上实现搜索。
注意:
开发环境要求
Android Studio Ladybug(2024.2.1)及之后的版本,JDK 17。
Android 6.0(API 23)及以上真机或模拟器。
前置条件
在构建界面之前,请确保您已经完成了以下 4 件事:
1. 在控制台创建了一个应用。
2. 在控制台创建了至少 2 个用户账号。
3. 集成了
TUIKit Android Compose。4. 调用
LoginStore 的 login 接口登录组件。注意:
每次启动应用,登录一次即可。
请确保登录成功,我们建议您在登录成功的回调里进行下文的操作。
步骤说明
本地搜索界面由 SearchScreen 这个
@Composable 组件实现。建议在体验搜索功能前,本地制造一些业务数据,例如联系人、消息、群聊,否则搜不到任何信息。注意,如果你直接使用我们的示例代码,需要预填充这几个参数:
sdkAppID,上文获取到的 sdkAppID。userID,操作者的 userID,也就是 快速开始 中创建的 user1。userSig,操作者的 userSig,也就是 快速开始 中创建的 user1 的 userSig。App 启动即加载搜索界面,在
SearchScreen 中输入搜索词触发搜索,示例代码如下:// SearchDemoActivity.ktimport android.os.Bundleimport android.view.WindowManagerimport androidx.activity.compose.setContentimport androidx.appcompat.app.AppCompatActivityimport androidx.compose.foundation.backgroundimport androidx.compose.foundation.layout.fillMaxSizeimport androidx.compose.foundation.layout.navigationBarsPaddingimport androidx.compose.foundation.layout.statusBarsPaddingimport androidx.compose.ui.Modifierimport io.trtc.tuikit.chat.uikit.components.theme.LocalThemeimport io.trtc.tuikit.chat.uikit.components.search.ui.SearchScreenimport io.trtc.tuikit.atomicxcore.api.CompletionHandlerimport io.trtc.tuikit.atomicxcore.api.login.LoginStoreclass SearchDemoActivity : AppCompatActivity() {private val sdkAppID: Int = 1234567890 // TODO: Fill in the sdkAppID hereprivate val userID = "" // TODO: Fill in your userID hereprivate val userSig = "" // TODO: Fill in your generated userSig hereoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE orWindowManager.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.colorsSearchScreen(modifier = Modifier.background(colors.bgColorOperate).fillMaxSize().statusBarsPadding().navigationBarsPadding(),onBack = { finish() },onContactSelect = { friendSearchInfo ->// Handle friend search resultval conversationID = "c2c_${friendSearchInfo.userID}"// Navigate to chat page with conversationID},onGroupSelect = { groupSearchInfo ->// Handle group search resultval conversationID = "group_${groupSearchInfo.groupID}"// Navigate to chat page with conversationID},onConversationSelect = { messageSearchResultItem ->// Handle conversation search resultval 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 提取文件名,并且都会保存到本地和服务器。而对于图片、语音、视频消息,界面通常显示缩略图或时长,可以指定消息类型做分类搜索,但不能通过关键字搜索。
