场景示例
第三方应用分享文件到会话
场景描述
集成 WOASDK 的 APP 通常会有从第三方应用分享文件到会话的需求,比如从微信 APP,文件 APP,浏览器 APP 等分享文件到对应的会话。如下图所示流程:
实现方法
APP 前置工作:先准备好文件路径,比如提供一个页面注册
intent-filter
, 使你的应用能处理ACTION_SEND
意图,并获取分享的内容。通讯录选择器回调注册。
kotlin
KIM.init(
application,
AK,
mutableListOf(
...
,
// 注册会话选择回调接口实现
KIMCfgContact().apply {
// 可支持会话多选
canMultipleSelect = true
// 支持会话选择最大数量
maxSupportCount: Int = 10
// 完成会话选择后的回调
chatPickerCallback = ChatPickerCallbackImpl()
}
)
)
- 调用WOASDK通讯录会话选择器接口选取需要发送的会话,得到会话ID。
kotlin
val intent = Intent(activity, KIMContactPickerActivity::class.java)
val args = bundleOf(
KIMContactPickerFragment.ARG_CHAT_PICKER_DATA to Bundle().apply {
// 透传数据,比如待发送的文件
putSerializable("file", file)
}
)
intent.putExtra(Router.EXTRA_DATA, args)
activity?.startActivity(intent)
- 选择完成后,弹起确认弹窗,弹窗内会话头像可通过WOASDK获取会话头像接口获取。
kotlin
KIM.getService().getLinkupService(KIMSdkContactPickerService::class.java)?.getChatAvatarImage(context, fragment, chatId, object: RequestListener {
fun onResourceReady(drawable: Drawable) {
binding.imageView.setImageDrawable(drawable)
}
fun onLoadFailed() {
binding.imageView.setImageResource(R.drawable.ic_default_avatar)
}
})
- 调用WOASDK发送文件消息接口,发送文件到会话。
kotlin
KIMCore.instance().sendMedia(message, file, new ISendMediaMessageCallback() { ... })
- 通过WOASDK接口场景会话页面跳转到指定会话。
kotlin
val bundle = KIMMessageListFragment.defaultArguments(chatId, "")
val newIntent = Intent(context, KIMMessageListFragment::class.java)
newIntent.putExtra(EXTRA_DATA, args)
context.startActivity(newIntent)
详细代码流程可参考 Demo “分享” 场景。