融云集成3--增删会话界面点击+号出现的模块ExtensionModule

2024-05-13 01:32

本文主要是介绍融云集成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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984305

相关文章

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

Python logging模块使用示例详解

《Pythonlogging模块使用示例详解》Python的logging模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查,下面给大家介绍Pythonlogging模... 目录一、为什么使用 logging 模块?二、核心组件三、日志级别四、基本使用步骤五、快速配置(bas

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp