融云自定义扩展功能

融云聊天中的扩展功能,通常都需要额外添加一些功能,所以就需要自己定义扩展功能,好了,不多说了,直接上吧。
首先需要对融云进行SDK的集成,并且还要进行注册、初始化
添加的这些功能都需要自定义一个provider的提供类,需要去继承InputProvider.ExtendProvider,代码如下:

//这里是我自定义的一个相册图片发送类
public class ConversationFunPicture extends InputProvider.ExtendProvider {
    public ConversationFunPicture(RongContext context) {
        super(context);
    }
    /**
     * 设置展示图标
     */
    @Override
    public Drawable obtainPluginDrawable(Context context) {
        return context.getResources().getDrawable(R.mipmap.picture);//这里是功能图标
    }
    /**
     * 设置图标下的标题
     */
    @Override
    public CharSequence obtainPluginTitle(Context context) {
        return context.getString(R.string.conversation_camera);//功能名
    }
    /**
     * click事件
     */
    @Override
    public void onPluginClick(View view) {
       //实现呢该功能的逻辑功能
    }
然后就将自己定义好的功能加入到数组InputProvider.ExtendProvider[],
InputProvider.ExtendProvider[] providers = {
                new ConversationFunPicture(RongContext.getInstance()),//图片
                new CameraInputProvider(RongContext.getInstance()),//相机
//                new RealTimeLocationInputProvider(RongContext.getInstance()),//地理位置
                new ConversationFunVedio(RongContext.getInstance()),//vedio
                new ConversationFunPerson(RongContext.getInstance()),//person card
                new ConversationFunLocation(RongContext.getInstance()),//Location
                new ConversationFunCollection(RongContext.getInstance()),//collection
                new ConversationFunTransfer(RongContext.getInstance())//transfer mongey
        };
RongIM.resetInputExtensionProvider(Conversation.ConversationType.PRIVATE, providers);
RongIM.getInstance().resetInputExtensionProvider(Conversation.ConversationType.DISCUSSION, providers);
RongIM.getInstance().resetInputExtensionProvider(Conversation.ConversationType.GROUP, providers);
RongIM.getInstance().resetInputExtensionProvider(Conversation.ConversationType.CUSTOMER_SERVICE, providers);
RongIM.getInstance().resetInputExtensionProvider(Conversation.ConversationType.CHATROOM, providers);

这里我在讨论组、私聊、…………….等等里面都添加了这个功能,所以就都写了,我看过很多人都写在一个ConversationActivity里面的,我个人建议不要这样写,单独写一个事件处理类,把这些功能都放进去,然后在这个事件处理类中进行初始化的方法操作,在Application里卖对融云进行初始化的时候再对这个类的初始化方法进行初始化就行了,比如我这里就单独处理了,在Application中作了一个RongClouldEvent.getInstence(this).init();然后在事件处理类中实现了一个静态方法

public static RongClouldEvent getInstence(Context context) {
    if (rongClouldEvent == null)
        rongClouldEvent = new RongClouldEvent(context);
    return rongClouldEvent;
}

可能解释的不够全面或者不是很严谨,还望包涵,对于初学者的我来说我已经很努力了。。。。。

你可能感兴趣的:(android)