跳转至

自定义

提示

输入区域相关概念:

1、输入区域扩展栏对外接口类为 RongExtension。

2、Plugin 是开发者自定义 “+” 号区域展开后的 item.

3、EmoticonTab 是开发者自定义 表情 tab 页。

Plugin

1、自定义 Plugin 并实现 IPluginModule。 如:

public class MyPlugin implements IPluginModule {
  …
}

2、自定义 ExtensionModule 继承自 DefaultExtensionModule,复写其中的 getPluginModules() 方法,返回需要展示的 plugin 列表。如:

public class MyExtensionModule extends DefaultExtensionModule {
    private MyPlugin myPlugin;
    @Override
    public List<IPluginModule> getPluginModules(Conversation.ConversationType conversationType) {
        List<IPluginModule> pluginModules =  super.getPluginModules(conversationType);
        pluginModules.add(myPlugin);
        return pluginModules;
    }
}

3、在初始化之后,取消 SDK 默认的 ExtensionModule,注册自定义的 ExtensionModule, 如下:

public void setMyExtensionModule() {
    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());
        }
    }
}

EmoticonTab

1、自定义 EmoticonTab 实现 IEmoticonTab。 如:

public class MyEmoticon implements IEmoticonTab {
  …
}

2、自定义 ExtensionModule 继承自 DefaultExtensionModule,复写其中的 getEmoticonTabs() 方法,返回需要展示的 EmoticonTab 列表。如:

public class MyExtensionModule extends DefaultExtensionModule {
    private MyEmoticon myEmoticon;
    @Override
    public List<IEmoticonTab> getEmoticonTabs() {
        List<IEmoticonTab> emoticonTabs =  super.getEmoticonTabs();
        emoticonTabs.add(myEmoticon);
        return emoticonTabs;
    }
}

3、在初始化之后,取消 SDK 默认的 ExtensionModule,注册自定义的 ExtensionModule, 如下:

public void setMyExtensionModule() {
    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());
        }
    }
}

提示

关于拓展区域的详细说明请参考融云 Android Extension 开发文档