Skip to content
能力中心
产品中心
应用市场
WebOffice
开发者后台

场景示例

第三方应用分享文件到会话

场景描述

集成 WOASDK 的 APP 通常会有从第三方应用分享文件到会话的需求,比如从微信 APP,文件 APP,浏览器 APP 等分享文件到对应的会话。如下图所示流程:

img

实现方法

  1. APP 前置工作:先准备好文件路径,比如提供一个页面注册 intent-filter, 使你的应用能处理 ACTION_SEND 意图,并获取分享的内容。

  2. 通讯录选择器回调注册。

kotlin
KIM.init(
    application,
    AK,
    mutableListOf(
        ...
        ,
        // 注册会话选择回调接口实现
        KIMCfgContact().apply {
            // 可支持会话多选
            canMultipleSelect = true
            // 支持会话选择最大数量
            maxSupportCount: Int = 10
            // 完成会话选择后的回调
            chatPickerCallback = ChatPickerCallbackImpl()
        }
    )
)
  1. 调用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)
  1. 选择完成后,弹起确认弹窗,弹窗内会话头像可通过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)
    }
})
  1. 调用WOASDK发送文件消息接口,发送文件到会话。
kotlin
KIMCore.instance().sendMedia(message, file, new ISendMediaMessageCallback() { ... })
  1. 通过WOASDK接口场景会话页面跳转到指定会话。
kotlin
val bundle = KIMMessageListFragment.defaultArguments(chatId, "")
val newIntent = Intent(context, KIMMessageListFragment::class.java)
newIntent.putExtra(EXTRA_DATA, args)
context.startActivity(newIntent)

详细代码流程可参考 Demo “分享” 场景。