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

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

回答:

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

以file plugin为例

在初始化完成之后,使用如下代码

   private void removeFilePlugin() {

        List<IExtensionModule> moduleList = RongExtensionManager.getInstance().getExtensionModules();

        Log.i(TAG, "moduleList.size() =  " + moduleList);

        if (moduleList != null) {

            IExtensionModule module = null;

            for (IExtensionModule extensionModule : moduleList) {

                Log.i(TAG, "extensionModule.getClass().getSimpleName() = " + extensionModule.getClass().getSimpleName());

                if (extensionModule instanceof DefaultExtensionModule) {

                    module = extensionModule;

                    break;

                }

            }

            RongExtensionManager.getInstance().unregisterExtensionModule(module);//注销之前的

            RongExtensionManager.getInstance().registerExtensionModule(new MyExtensionMoudle());//注册新的

            List<IExtensionModule> moduleList2 = RongExtensionManager.getInstance().getExtensionModules();

            Log.i(TAG, "moduleList.size() = " + moduleList2);

        }

    }

其中的MyExtensionMoudle类如下:

public class MyExtensionMoudle extends DefaultExtensionModule {

    @Override

    public List<IPluginModule> getPluginModules(Conversation.ConversationType conversationType) {

        List<IPluginModule> list = super.getPluginModules(conversationType);

        IPluginModule temp = null;

        for (IPluginModule module : list) {

            if (module instanceof FilePlugin) {

                temp = module;

                break;

            }

        }

        list.remove(temp);

        return list;

    }

}



我对此仍有疑问!继续追问