很久以前自定义过,当时是的API是这样的
InputProvider.ExtendProvider[] provider = {
new ContactsProvider(RongContext.getInstance()),//自定义通讯录
new ImageInputProvider(RongContext.getInstance()),//图片
new CameraInputProvider(RongContext.getInstance()),//相机
new LocationInputProvider(RongContext.getInstance())//地理位置
new RealTimeLocationInputProvider(RongContext.getInstance()),//地理位置
new VoIPInputProvider(RongContext.getInstance()),// 语音通话
};
RongIM.resetInputExtensionProvider(Conversation.ConversationType.PRIVATE, provider);
随着融云的迭代,2.8.0之后这个API被废弃了,不再有Provider类,而是实现IPluginModule接口的类,重设的方法也改为注册监听机制。
现在的方法是,先自定义一个聚成自DefaultExtensionModule的类,在其getPluginModules方法中返回你输入法扩展栏需要的插件。
public class MyExtensionModule extends DefaultExtensionModule {
private RongImInputExtensionPlugin myPlugin;
@Override
public List<IPluginModule> getPluginModules(Conversation.ConversationType conversationType) {
List<IPluginModule> pluginModuleList = new ArrayList<>();
IPluginModule image = new ImagePlugin();
// IPluginModule location = new DefaultLocationPlugin();
// IPluginModule audio = new AudioPlugin();
// IPluginModule video = new VideoPlugin();
IPluginModule file = new FilePlugin();
if (conversationType.equals(Conversation.ConversationType.GROUP) ||
conversationType.equals(Conversation.ConversationType.DISCUSSION) ||
conversationType.equals(Conversation.ConversationType.PRIVATE)) {
pluginModuleList.add(image);
// pluginModuleList.add(location);
// pluginModuleList.add(audio);
// pluginModuleList.add(video);
pluginModuleList.add(file);
} else {
pluginModuleList.add(image);
}
return pluginModuleList;
}
}
在你自己的Application里,
RongIM.init(this);
初始化融云之后,执行下面一个方法,意图是从融云默认的模块里,拿出默认的defaultModule 模块,反注册掉,然后注册我们自己的扩展模块。
private void setInputProvider() {
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());
}
}
}
参考 :http://support.rongcloud.cn/kb/NTQ4#3-动态修改-rongextension-样式客服输入模式