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

接入外部通讯录

如果接入方已实现自研的通讯录页面,并希望替换掉协作中台SDK 内置通讯录,可以通过实现相关协议方法实现效果。

接入方需要实现 KIMExpContacts 接口,并将其注入到协作中台 SDK 中。

接口定义

方法参数返回值说明
openContactsactivity: FragmentActivity打开通讯录
openContactsPickeractvity: FragmentActivity
params: ContactsPickerParams
callback: (selectedUids: Array<String>?, chatIds: Array<String>?) -> Unit
打开通讯录选择器,
接入方可以根据 params 参数非 null 字段修改页面的 UI 交互,例如修改标题、显示默认选中的人员等。
完成选择后,接入方必须回调 callback 函数,第一个参数为选择的用户 Id 数组,第二个参数为选中的会话 Id 数组。

ContactsPickerParams

参数类型说明
titleString?通讯录title
funcTypeInt?打开通讯录意图, 参考com.kingsoft.kim.kit.contacts.service.constant.FuncType
singleModeBoolean?是否为单选模式
selectedThirdUidsArray<String>?已选用户id列表,可以取消选中
defaultThirdUidsArray<String>?默认用户id列表,不能取消选中
maxSelectCountInt?最大选择数量, 默认400
okButtonTextInt?确认按钮文案StringResId
showRecentBoolean?是否显示最近会话
recentChatTypeInt?显示最近会话的类型
requestCodeInt

代码示例

  1. 接入方需要创建一个自定义类 MyContactsExp 并实现 KIMExpContacts 接口:
kotlin
class AccessOpenContactExp : KIMExpContacts {

    override fun openContacts(context: Context) {
        context.startActivity(Intent(context, DemoContactsActivity::class.java))
    }

    override fun openContactsPicker(
        context: Context,
        params: KIMExpContacts.ContactsPickerParams,
        callback: (selectedUids: Array<String>?, chatIds: Array<String>?) -> Unit
    ) {
        AccessOpenContactActivity.callback = callback
        context.startActivity(Intent(context, AccessOpenContactActivity::class.java))
    }
}
  1. 创建一个自定义类 MyContactsSdkApplication 并继承自 KIMSdkApplication,重写 confMeatsOnBone 方法:然后将 MyContactsExp 类注入到协作中台 SDK 中:
kotlin
class MyContactsSdkApplication : KIMSdkApplication() {

    override fun confMeatsOnBone(): KConf<Meat> {
        return kConfOf(
            // 配置通讯录扩展类
            KIMExpContacts::class.java confTo AccessOpenContactExp::class.java
        )
    }
}
  1. 在 AndroidManifest.xml 文件中声明 MyContactsSdkApplication 类:
Xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.kingsoft.kim.kit.sample">
    <application>
        ...
        <meta-data
            android:name="com.kingsoft.kim.kit.sample.p.kop.contacts.MyContactsSdkApplication"
            android:value="@string/kim_sdk_application" />
    </application>
</manifest>

通过以上步骤即可完成外部通讯录的接入,实现 协作中台 SDK 内所有涉及调用通讯录的功能,全部替换为外部通讯录,例如通讯录tab、创建群聊/添加群聊成员等。