2.8.0修改或者添加“+”扩展区域的功能

2.8.0以后的版本扩展功能模块的集成
发布时间: 2016-11-23 16:05

回答:

分两步:

第一步:

继承DefaultExtensionModule,重写里边的getPluginModule的方法:

@Override
public List<IPluginModule> getPluginModules(Conversation.ConversationType conversationType) {
    List<IPluginModule> pluginModuleList = new ArrayList<>();

    IPluginModule image = new ImagePlugin();
    IPluginModule file = new FilePlugin();

    pluginModuleList.add(image);
    try {
        String clsName = "com.amap.api.netlocation.AMapNetworkLocationClient";
        Class<?> locationCls = Class.forName(clsName);
        if (locationCls != null) {
            IPluginModule combineLocation = new CombineLocationPlugin();
            IPluginModule locationPlugin = new DefaultLocationPlugin();
            if (conversationType.equals(Conversation.ConversationType.PRIVATE)) {
                pluginModuleList.add(combineLocation);
            } else {
                pluginModuleList.add(locationPlugin);
            }
        }
    } catch (Exception e) {
        RLog.i(TAG, "Not include AMap");
        e.printStackTrace();
    }
    if (conversationType.equals(Conversation.ConversationType.GROUP) ||
            conversationType.equals(Conversation.ConversationType.DISCUSSION) ||
            conversationType.equals(Conversation.ConversationType.PRIVATE)) {
        pluginModuleList.addAll(InternalModuleManager.getInstance().getExternalPlugins(conversationType));
    }
    pluginModuleList.add(file);

    return pluginModuleList;
}


第二部,在你app的oncreate()中RongIM或者RongIMClient初始化时,添加以下代码:

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


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