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

集成通讯录选择器

协作中台SDK 除了提供基本的通讯录页面功能外,还提供了通讯录选择器功能。你可以在启动通讯录选择器页面时,传入配置参数及回调参数,达到通过通讯录选择器选择会话的需求。

效果展示

接入方需要实现 KIMContactPickerCallback 接口,并通过 KIMCfgContact 将其注入到 WOASDK 中。

有以下三种打开页面的方式,可参考下文代码示例。

  • 方式1/2使用原生 android api 打开页面,是一种更灵活调起页面的方案,如果用户要从 activity 切换到 fragment 的方式打开页面,需要自行处理。

  • 方式3是对原生api 的组合封装,调用更简单,但不如上种方式灵活。

接口定义

KIMContactPickerCallback

方法参数返回值说明
onSelectCompletedselectedResult: List<KIMContactSelectedResult>
已选会话,如果是单聊将创建单聊会话
error: String?
失败原因
data: Bundle?
用户透传的数据
context: Context
fragmentManager: FragmentManager
exitCallback: IContactable
调用 exit 方法关闭页面
选中会话成功回调

IContactable

方法参数返回值说明
exit退出联系人界面

参数说明

KIMContactPickerFragment

参数类型说明
configKIMCfgConfig通讯录初始化配置参数
KIMContactPickerFragment.ARG_CHAT_PICKER_DATABundle用户透传数据

KIMCfgConfig属性说明:

属性类型说明
chatPickerCallbackKIMContactPickerCallback选择完成后的回调,seletedResult:所选择的数据; error:错误信息,返回为 null 时,意为成功;data:用户透传数据; exitCallback: 关闭页面的接口

KIMContactSelectedResult属性说明:

属性类型说明
chatKIMContactSelectedChat选择会话信息模型,包含会话ID,会话名称等数据

代码示例

应用程序初始化时,调用 KIM.init 完成会话选择回调的注册,同时也提供了单选,多选,最大选择会话数目等配置项,接入方可按需配置。

kotlin
KIM.init(
    application,
    AK,
    mutableListOf(
        ...
        ,
        // 注册会话选择回调接口实现
        KIMCfgContact().apply {
            // 完成会话选择后的回调
            chatPickerCallback = IntegrateContactPickerCallback()
        }
    )
)

方式1:以Activity的方式打开页面

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)

方式2:创建Fragment并加入到自定义Activity中

kotlin
val args = bundleOf(
    KIMContactPickerFragment.ARG_CHAT_PICKER_DATA to Bundle().apply {
        // 透传数据,比如待发送的文件
        putSerializable("file", file)
    }
)
val fragment = new KIMContactPickerFragment()
fragment.setArguments(args)
fragmentManager.beginTransaction().add(containerId, fragment, tag)

方式3:默认以Activity的形式打开页面,若在KIMCfgRouter中配置以Fragment的形式打开,用户需要自行管理Fragment.

kotlin
val args = bundleOf(
    KIMContactPickerFragment.ARG_CHAT_PICKER_DATA to Bundle().apply {
        // 透传数据,比如待发送的文件
        putSerializable("file", file)
    }
)
KIM.getService().goPage(KIMContactPickerFragment::class.java.getName(), context, args)