全部文档

更新时间: 2021-03-08

# 功能描述

SDK 支持添加、修改、删除扩展板上的每一个扩展项,包括修改扩展项的图片、文案以及点击之后的响应事件处理。

# 内置扩展项

IMKit SDK 内部默认集成了 图库文件 插件. 融云还提供了其他插件, 直接集成使用即可.

# 扩展项介绍
名称
FilePlugin 文件
ImagePlugin 图库
SightPlugin 小视频
AudioPlugin 语音通话
VideoPlugin 视频通话
DefaultLocationPlugin 位置

# 增删扩展项

  1. 创建 MyExtensionModule 继承自 DefaultExtensionModule,复写其中的 getPluginModules() 方法, 增加或删除扩展项.

public class MyExtensionModule extends DefaultExtensionModule {
    @Override
    public List<IPluginModule> getPluginModules(Conversation.ConversationType conversationType) {
        List<IPluginModule> pluginModules = super.getPluginModules(conversationType);
        ListIterator<IPluginModule> iterator = pluginModules.listIterator();

        // 删除扩展项
        while (iterator.hasNext()) {
            IPluginModule integer = iterator.next();
            // 以删除 FilePlugin 为例
            if (integer instanceof FilePlugin) {
                iterator.remove();
            }
        }

        // 增加扩展项, 以 ImagePlugin 为例
        pluginModules.add(new ConectionPlugin());
        return pluginModules;
    }
}

已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  1. SDK 初始化之后,注销默认的 ExtensionModule,注册自定义的 MyExtensionModule
private void registerExtensionPlugin() {
    List<IExtensionModule> moduleList = RongExtensionManager.getInstance().getExtensionModules();
    IExtensionModule defaultModule = null;
    if (moduleList != null) {
        for (IExtensionModule module : moduleList) {
            if (module instanceof DefaultExtensionModule) {
                defaultModule = module;
                break;
            }
        }
        if (defaultModule != null) {
            RongExtensionManager.getInstance().unregisterExtensionModule(defaultModule);
            RongExtensionManager.getInstance().registerExtensionModule(new MyExtensionModule());
        }
    }
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 自定义扩展项

  1. 创建 MyPlugin 实现 IPluginModule
public class MyPlugin implements IPluginModule {
  @Override
    public void onClick(Fragment currentFragment, RongExtension extension) {
        super.onClick(currentFragment,extension);
        // 扩展性监听回调
    }
}

已复制
1
2
3
4
5
6
7
8
  1. 添加自定义扩展项可参考 增删扩展项

# 点击扩展项

# 监听所有扩展项点击事件

创建 MyConversationFragment 继承 ConversationFragment ,重写 onPluginClicked 方法, 该方法会在 Plugin 被点击时调用, 并回传 Plugin 的信息。

# 修改 SDK 内置扩展项监听
  1. 继承已有的插件,并重写 onClick 方法. 以 VideoPlugin 为例:
public class MyVideoPlugin extends VideoPlugin {
    @Override
    public void onClick(Fragment currentFragment, RongExtension extension) {
        Toast.makeText(currentFragment.getContext(),
                "我被点击了", Toast.LENGTH_LONG).show();
        super.onClick(currentFragment,extension);
    }
}
已复制
1
2
3
4
5
6
7
8
  1. 删除之前的扩展项, 添加新创建的扩展项
public class MyExtensionModule extends DefaultExtensionModule {
    @Override
    public List<IPluginModule> getPluginModules(Conversation.ConversationType conversationType) {
        List<IPluginModule> pluginModules = new ArrayList<>();
        pluginModules.add(new ImagePlugin());
        pluginModules.add(new MyVideoPlugin());
        return pluginModules;
    }
}

已复制
1
2
3
4
5
6
7
8
9
10
  1. 请参考 增删扩展项 第二步.

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助