接入外部通讯录
如果接入方已实现自研的通讯录页面,并希望替换掉协作中台SDK 内置通讯录,可以通过实现相关协议方法实现效果。
接入方需要实现 KIMExpContacts
接口,并将其注入到协作中台 SDK 中。
接口定义
方法 | 参数 | 返回值 | 说明 |
---|---|---|---|
openContacts | activity: FragmentActivity | 打开通讯录 | |
openContactsPicker | actvity: FragmentActivity params: ContactsPickerParams callback: (selectedUids: Array<String>?, chatIds: Array<String>?) -> Unit | 打开通讯录选择器, 接入方可以根据 params 参数非 null 字段修改页面的 UI 交互,例如修改标题、显示默认选中的人员等。 完成选择后,接入方必须回调 callback 函数,第一个参数为选择的用户 Id 数组,第二个参数为选中的会话 Id 数组。 |
ContactsPickerParams
参数 | 类型 | 说明 |
---|---|---|
title | String? | 通讯录title |
funcType | Int? | 打开通讯录意图, 参考com.kingsoft.kim.kit.contacts.service.constant.FuncType |
singleMode | Boolean? | 是否为单选模式 |
selectedThirdUids | Array<String>? | 已选用户id列表,可以取消选中 |
defaultThirdUids | Array<String>? | 默认用户id列表,不能取消选中 |
maxSelectCount | Int? | 最大选择数量, 默认400 |
okButtonText | Int? | 确认按钮文案StringResId |
showRecent | Boolean? | 是否显示最近会话 |
recentChatType | Int? | 显示最近会话的类型 |
requestCode | Int |
代码示例
- 接入方需要创建一个自定义类
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))
}
}
- 创建一个自定义类
MyContactsSdkApplication
并继承自KIMSdkApplication
,重写confMeatsOnBone
方法:然后将MyContactsExp
类注入到协作中台 SDK 中:
kotlin
class MyContactsSdkApplication : KIMSdkApplication() {
override fun confMeatsOnBone(): KConf<Meat> {
return kConfOf(
// 配置通讯录扩展类
KIMExpContacts::class.java confTo AccessOpenContactExp::class.java
)
}
}
- 在 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、创建群聊/添加群聊成员等。