package cn.rongcloud.demo_imlib_basic_android; import android.content.Context; import android.widget.Toast; import cn.rongcloud.demo_imlib_basic_android.logger.Log; import cn.rongcloud.demo_imlib_basic_android.message.CustomizeMessage; import io.rong.imlib.RongIMClient; import io.rong.imlib.model.Message; import io.rong.message.FileMessage; import io.rong.message.ImageMessage; import io.rong.message.TextMessage; import io.rong.message.VoiceMessage; /** * Created by Beyond on 27/10/2016. */ class AppContext{ private static final String TAG = "AppContext"; private int mMessageId; private static AppContext appContext = new AppContext(); private Context mContext; private AppContext() { } static AppContext getInstance() { return appContext; } public int getMessageId() { return mMessageId; } private void setMessageId(int mMessageId) { this.mMessageId = mMessageId; } void init(Context context) { mContext = context.getApplicationContext(); } void registerReceiveMessageListener() { RongIMClient.setOnReceiveMessageListener(onReceiveMessageListener); } /** * 设置接收消息的监听器 */ private RongIMClient.OnReceiveMessageListener onReceiveMessageListener = new RongIMClient.OnReceiveMessageListener() { @Override public boolean onReceived(Message message, int i) { if (message.getContent() instanceof TextMessage) { Log.d(TAG, "收到文本消息: " + ((TextMessage) message.getContent()).getContent()); Log.d(TAG, "文本消息的附加信息: " + ((TextMessage) message.getContent()).getExtra() + '\n'); setMessageRead(message); //设置收到的消息为已读消息 } else if (message.getContent() instanceof ImageMessage) { Log.d(TAG, "收到图片消息, Uri --> " + ((ImageMessage) message.getContent()).getThumUri() + '\n'); } else if (message.getContent() instanceof VoiceMessage) { Log.d(TAG, "收到语音消息,Uri --> " + ((VoiceMessage)message.getContent()).getUri()); Log.d(TAG, "语音消息时长: " + ((VoiceMessage)message.getContent()).getDuration() + '\n'); } else if (message.getContent() instanceof FileMessage) { Log.d(TAG, "服务端 Uri --> " + ((FileMessage)message.getContent()).getFileUrl() + '\n'); } else if (message.getContent() instanceof CustomizeMessage) { Log.d(TAG, "成功发送自定义消息,它的时间戳: " + ((CustomizeMessage) message.getContent()).getSendTime()); Log.d(TAG, "自定义消息的内容: " + ((CustomizeMessage) message.getContent()).getContent() + '\n'); } setMessageId(message.getMessageId()); return false; } }; /** * 设置消息为已读消息 */ private void setMessageRead(Message message) { if (message.getMessageId() > 0) { io.rong.imlib.model.Message.ReceivedStatus status = message.getReceivedStatus(); status.setRead(); message.setReceivedStatus(status); RongIMClient.getInstance().setMessageReceivedStatus(message.getMessageId(), status, null); Toast.makeText(mContext, "该条消息已设置为已读", Toast.LENGTH_LONG).show(); } } }