1,继承TextMessage自定义MockTextMessage
大致模版如下
import android.os.Parcel;
import android.text.TextUtils;
import java.util.ArrayList;
import java.util.List;
import io.rong.imlib.MessageTag;
import io.rong.message.TextMessage;
@MessageTag(value = "RC:TxtMsg", flag = MessageTag.ISCOUNTED)
public class MockTextMessage extends TextMessage {
protected MockTextMessage() {
}
public static TextMessage obtain(String text) {
return new MockTextMessage(text);
}
public MockTextMessage(String content) {
super(content);
}
public MockTextMessage(byte[] data) {
super(data);
}
public MockTextMessage(Parcel in) {
super(in);
}
public static final Creator<MockTextMessage> CREATOR =
new Creator<MockTextMessage>() {
@Override
public MockTextMessage createFromParcel(Parcel source) {
return new MockTextMessage(source);
}
@Override
public MockTextMessage[] newArray(int size) {
return new MockTextMessage[size];
}
};
@Override
public List<String> getSearchableWord() {
List<String> words = new ArrayList<>();
String content = getContent();
// 假设使用processContent方法处理content
String contentProcessed = processContent(content);
words.add(contentProcessed);
return words;
}
}
2,注册MockTextMessage消息
RongIMClient.registerMessageType(messageContentClassList);
3,修改消息发送逻辑
a,修改源码方式
源码方式依赖,在Kit源码中声明MockTextMessage,在RongExtensionViewModel#onSendClick()中,修改TextMessage为MockTextMessage
b,非源码依赖Kit或不想修改Kit源码方式
调用RongExtensionManager.getInstance().addExtensionEventWatcher全局设置接口,onSendToggleClick接口方法是点击前的回调,在这里替换TextMessage。