如何去掉融云Kit里默认的Plugin,例如FilePlugin

因为自定义,不需要融云的默认加载的Pulgin,需要去掉某一个或多个plugin
发布时间: 2018-04-02 14:52

回答:

可以参考如下代码来去掉某一个默认plugin

以file plugin为例


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;
    }}


2.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());
        }
    }}