
IM即时通讯
安全可靠、全球互通

实时音视频
流畅稳定、省钱省力
回答:
ImagePlugin(图片)和FilePlugin(文件)是SDK默认添加到拓展区的,其它的plugin开发者也可以自定义,如果开发者想要删除按照以下步骤:
方案一:
第一步:自定义一个 ExtensionModule 继承自 DefaultExtensionModule,复写其中的 getPluginModules() 方法:
例如:
public class LiaoBaExtensionModule extends DefaultExtensionModule { private EditText mEditText; @Override public void onAttachedToExtension(RongExtension extension) { super.onAttachedToExtension(extension); mEditText = extension.getInputEditText(); } @Override public void onDetachedFromExtension() { super.onDetachedFromExtension(); mEditText = null; } @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(); if (integer instanceof FilePlugin) { iterator.remove(); } } pluginModules.add(new ConectionPlugin()); return pluginModules; } }
注意:在删除FilePlugin的时候如果用下面这种增强for循环的方式,会抛异常java.util.ConcurrentModificationException。
for (IPluginModule module : pluginModules) { if (module instanceof FilePlugin) { pluginModules.remove(module); } }
第二步:SDK在Application的onCreate()方法初始化之后,取消 SDK 默认的 ExtensionModule,注册自定义的 ExtensionModule
例如:在init之后,在Application的onCreate()方法中调用下面方法:
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 LiaoBaExtensionModule()); } } }
方案二:
自定义ConversationFragment 继承自ConversationFragment,获取RongExtensionon,在Resume 中调用
4.x sdk
@Override public void onResume() { super.onResume(); List<IPluginModule> pluginModules = mRongExtension.getPluginModules(); //获取当前所有 Plugin 列表 mRongExtension.addPlugin(new CustomPlugin()); //增加某个plugin for (int i = 0; i < pluginModules.size(); i++) { if (pluginModules.get(i) instanceof FilePlugin){ mRongExtension.removePlugin(pluginModules.get(i) ); //删除个plugin } } }
5.xsdk
@Override public void onResume() { super.onResume(); mRongExtension.getPluginBoard().addPlugin(new AudioPlugin()); //增加某个plugin List<IPluginModule> pluginModules = mRongExtension.getPluginBoard().getPluginModules(); for (int i = 0; i < pluginModules.size(); i++) { if (pluginModules.get(i) instanceof FilePlugin){ mRongExtension.getPluginBoard().removePlugin(pluginModules.get(i) ); //删除个plugin } } }