融云 android开发中如何在输入区域新增扩展功能
最近在新开发的项目中集成了融云聊天功能,其中有一项需求是在单聊界面的输入区域增加两个自定义的功能,网上找了一下,发现基本没有新版本的开发指南,写这篇文章的目的一是记录,而是给android萌新提供更快的开发指南,如有问题,欢迎指教。
第一步:首先自定义CollectionPlugin(自定义功能类名),继承融云的IPluginModule,具体代码如下:
importandroid.content.Context;
importandroid.content.Intent;
importandroid.graphics.drawable.Drawable;
importandroid.support.v4.app.Fragment;
importcom.youyou.dajian.R;
importcom.youyou.dajian.view.activity.client.StartDajianActivity;
importio.rong.imkit.RongExtension;
importio.rong.imkit.plugin.IPluginModule;
/**
* Created by XXY on 2017/11/22 0022.
*/
public classStartDajianPluginimplementsIPluginModule {
@Override
publicDrawableobtainDrawable(Contextcontext) {
returncontext.getResources().getDrawable(R.mipmap.dajian_plugin);//功能图标
}
@Override
publicStringobtainTitle(Contextcontext) {
return"答见";//功能名称
}
@Override
public voidonClick(Fragment fragment,RongExtension rongExtension) {
StartDajianActivity.start(fragment.getActivity(),rongExtension.getTargetId());//点击事件,rongExtension.getTargetId()获取到聊天对象的id
}
@Override
public voidonActivityResult(inti, inti1,Intent intent) {
//返回的数据
}
}
第二步:自定义MyExtensionModule,继承自融云DefaultExtensionModule,重写getPluginModules(),代码如下:
privateCollectionPlugincollectionPlugin=newCollectionPlugin();
privateStartDajianPluginstartDajianPlugin=newStartDajianPlugin();
@Override
publicListgetPluginModules(Conversation.ConversationType conversationType) {
List pluginModules =super.getPluginModules(conversationType);//获取原来的plugin列表
pluginModules.add(collectionPlugin);//新增收藏功能
pluginModules.add(startDajianPlugin);//新增功能
returnpluginModules;
}
第三步:在初始化融云后(我是在自己自定义的Application中初始化的),取消 SDK 默认的 ExtensionModule,注册自定义的 ExtensionModule, 代码如下:
RongIM.init(this);//初始化融云
RongIM.registerMessageType(DajianMessage.class);//注册自定义消息类型
RongIM.getInstance().registerMessageTemplate(newCustomizeMessageItemProvider());
setMyExtensionModule();//取消 SDK 默认的 ExtensionModule,注册自定义的 ExtensionModule
public voidsetMyExtensionModule() {
List moduleList = RongExtensionManager.getInstance().getExtensionModules();
IExtensionModule defaultModule =null;
if(moduleList !=null) {
for(IExtensionModule module : moduleList) {
if(moduleinstanceofDefaultExtensionModule) {
defaultModule = module;
break;
}
}
if(defaultModule !=null) {
RongExtensionManager.getInstance().unregisterExtensionModule(defaultModule);
RongExtensionManager.getInstance().registerExtensionModule(newMyExtensionModule());
}
}
}
以上就是全部过程了,希望能给各位提供一点帮助。