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

接入方需要实现 KIMContactPickerCallback
接口,并通过 KIMCfgContact
将其注入到 WOASDK 中。
有以下三种打开页面的方式,可参考下文代码示例。
方式1/2使用原生 android api 打开页面,是一种更灵活调起页面的方案,如果用户要从 activity 切换到 fragment 的方式打开页面,需要自行处理。
方式3是对原生api 的组合封装,调用更简单,但不如上种方式灵活。
接口定义
KIMContactPickerCallback
方法 | 参数 | 返回值 | 说明 |
---|---|---|---|
onSelectCompleted | selectedResult: List<KIMContactSelectedResult> 已选会话,如果是单聊将创建单聊会话 error: String? 失败原因 data: Bundle? 用户透传的数据 context: Context fragmentManager: FragmentManager exitCallback: IContactable 调用 exit 方法关闭页面 | 选中会话成功回调 |
IContactable
方法 | 参数 | 返回值 | 说明 |
---|---|---|---|
exit | 退出联系人界面 |
参数说明
KIMContactPickerFragment
:
参数 | 类型 | 说明 |
---|---|---|
config | KIMCfgConfig | 通讯录初始化配置参数 |
KIMContactPickerFragment.ARG_CHAT_PICKER_DATA | Bundle | 用户透传数据 |
KIMCfgConfig
属性说明:
属性 | 类型 | 说明 |
---|---|---|
chatPickerCallback | KIMContactPickerCallback | 选择完成后的回调,seletedResult:所选择的数据; error:错误信息,返回为 null 时,意为成功;data:用户透传数据; exitCallback: 关闭页面的接口 |
KIMContactSelectedResult
属性说明:
属性 | 类型 | 说明 |
---|---|---|
chat | KIMContactSelectedChat | 选择会话信息模型,包含会话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)