本文主要是介绍融云集成3--增删会话界面点击+号出现的模块ExtensionModule,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.如果我们把所有的包都导入项目,那么融云会通过反射的方式去判断是否有某个类来判断是否存在语音或者其他插件,有的话就会默认显示在会话界面的ExtensionModule模块,也就是图中的RongExtension;
2.如果我们不需要这么多功能:
自定义一个 ExtensionModule 继承自 DefaultExtensionModule,复写其中的 getPluginModules() 方法,返回需要展示的 plugin 列表。如:
下面是融云已经实现了的一些插件
/*** Created by longShun on 2017/2/22.* desc 只展示发送图片的功能插件*/
public class MyExtensionModule extends DefaultExtensionModule {@Overridepublic List<IPluginModule> getPluginModules(Conversation.ConversationType conversationType) {List<IPluginModule> pluginModules = super.getPluginModules(conversationType);//清空所有的插件pluginModules.clear();//添加一个发送图片的插件pluginModules.add(new ImagePlugin());//如果需要增加的话,那么同理,在这个集合中添加需要的插件return pluginModules;}
}
3.最后一步,替换调默认的ExtensionModule,删除红包模块
首先,我们看看IExtensionModule的实现结构,他只有两个实现类,DefaultExtensionModule就是默认展示在输入扩展框里面的模块(这里面包含了图片,文件,定位等插件);另一个就是单独的发红包模块。
//重新设置会话界面的ExtensionModule
private void resetExtensionPlugin() {List<IExtensionModule> extensionModules = RongExtensionManager.getInstance().getExtensionModules();IExtensionModule defaultExtensionModule = null;IExtensionModule redPackageModule = null;for (int i = 0; i < extensionModules.size(); i++) {IExtensionModule module = extensionModules.get(i);//取出默认的模块if (module instanceof DefaultExtensionModule) {defaultExtensionModule = module;} else if (module instanceof JrmfExtensionModule) {//取出红包模块redPackageModule = module;}}if (defaultExtensionModule != null) {//删除默认展示的模块
RongExtensionManager.getInstance().unregisterExtensionModule(defaultExtensionModule);}if (redPackageModule != null) {
//删除红包模块
RongExtensionManager.getInstance().unregisterExtensionModule(redPackageModule);}
//注册自定义的模块
RongExtensionManager.getInstance().registerExtensionModule(new MyExtensionModule());}}
4.如果你想要添加自定义的插件
自定义 Plugin 并实现 IPluginModule。 如:
public class MyPlugin implements IPluginModule {…
}
仿照下面这个图片插件来写就行了,也就几个方法,返回图片和标题,以及点击事件,
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//package io.rong.imkit.plugin;import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import io.rong.imkit.RongExtension;
import io.rong.imkit.R.drawable;
import io.rong.imkit.R.string;
import io.rong.imkit.plugin.IPluginModule;
import io.rong.imkit.plugin.image.PictureSelectorActivity;
import io.rong.imkit.utilities.PermissionCheckUtil;
import io.rong.imlib.model.Conversation.ConversationType;public class ImagePlugin implements IPluginModule {ConversationType conversationType;String targetId;public ImagePlugin() {}public Drawable obtainDrawable(Context context) {return ContextCompat.getDrawable(context, drawable.rc_ext_plugin_image_selector);}public String obtainTitle(Context context) {return context.getString(string.rc_plugin_image);}public void onClick(Fragment currentFragment, RongExtension extension) {String[] permissions = new String[]{"android.permission.READ_EXTERNAL_STORAGE"};if(PermissionCheckUtil.requestPermissions(currentFragment, permissions)) {this.conversationType = extension.getConversationType();this.targetId = extension.getTargetId();Intent intent = new Intent(currentFragment.getActivity(), PictureSelectorActivity.class);extension.startActivityForPluginResult(intent, 23, this);}}public void onActivityResult(int requestCode, int resultCode, Intent data) {}
}
这篇关于融云集成3--增删会话界面点击+号出现的模块ExtensionModule的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!