融云集成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: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 💻💻💻数据库约束 🔭🔭🔭约束类型 not null: 指示某列不能存储 NULL 值unique: 保证某列的每行必须有唯一的值default: 规定没有给列赋值时的默认值.primary key:

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

C# 防止按钮botton重复“点击”的方法

在使用C#的按钮控件的时候,经常我们想如果出现了多次点击的时候只让其在执行的时候只响应一次。这个时候很多人可能会想到使用Enable=false, 但是实际情况是还是会被多次触发,因为C#采用的是消息队列机制,这个时候我们只需要在Enable = true 之前加一句 Application.DoEvents();就能达到防止重复点击的问题。 private void btnGenerateSh

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

python内置模块datetime.time类详细介绍

​​​​​​​Python的datetime模块是一个强大的日期和时间处理库,它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。 ----------动动小手,非常感谢各位的点赞收藏和关注。----------- 使用datet

C8T6超绝模块--EXTI

C8T6超绝模块–EXTI 大纲 控制流程结构体分析EXTI实现按键 具体案例 控制流程 这里是流程框图,具体可以去看我STM32专栏的EXTI的具体分析 结构体分析 typedef struct {uint32_t EXTI_Line; // 中断/事件线EXTIMode_TypeDef EXTI_Mode; // EXTI 模式EXTITrigger_TypeDef EXTI_