public void sendSingleTextMessage(JSONArray data, CallbackContext callbackContext) { Log.i(TAG, " sendSingleTextMessage \n" + data); final CallbackContext cb = callbackContext; try { String username = data.getString(0); String text = data.getString(1); Conversation conversation = JMessageClient.getSingleConversation(username); if (conversation == null) { conversation = Conversation.createSingleConversation(username); } if (conversation == null) { callbackContext.error("无法创建对话"); return; } TextContent content = new TextContent(text); final Message msg = conversation.createSendMessage(content); JMessageClient.sendMessage(msg); callbackContext.success("正在发送"); } catch (JSONException e) { e.printStackTrace(); callbackContext.error("error reading id json"); } }
/** * 鍦ㄤ細璇濆垪琛ㄤ腑鎺ユ敹娑堟伅 * * @param event */ public void onEventMainThread(MessageEvent event) { Log.i(TAG, "onEventMainThread MessageEvent execute"); Message msg = event.getMessage(); String targetID = msg.getTargetID(); ConversationType convType = msg.getTargetType(); Conversation conv; if (convType == ConversationType.group) { conv = JMessageClient.getGroupConversation(Integer.parseInt(targetID)); } else { conv = JMessageClient.getSingleConversation(targetID); } if (conv != null && convType == ConversationType.single) { // 濡傛灉缂撳瓨浜嗗ご鍍忥紝鐩存帴鍒锋柊浼氳瘽鍒楄〃 if (NativeImageLoader.getInstance().getBitmapFromMemCache(targetID) != null) { Log.i("Test", "conversation "); mConvListController.refreshConvList(); // 娌℃湁澶村儚锛屼粠Conversation鎷� } else { File file = conv.getAvatarFile(); // 鎷垮埌鍚庣紦瀛樺苟鍒锋柊 if (file != null) { mConvListController.loadAvatarAndRefresh(targetID, file.getAbsolutePath()); // conversation涓病鏈夊ご鍍忥紝鐩存帴鍒锋柊锛孲DK浼氬湪鍚庡彴鑾峰緱澶村儚锛屾嬁鍒板悗浼氭墽琛宱nEvent(ConversationRefreshEvent // conversationRefreshEvent) } else mConvListController.refreshConvList(); } } else { mConvListController.refreshConvList(); } }
public ChatListAdapter(Context context, String targetID) { this.context = context; this.mActivity = (Activity) context; this.mTargetID = targetID; this.mConv = JMessageClient.getSingleConversation(mTargetID); this.mMsgList = mConv.getMessagesFromNewest(0, mOffset); reverse(mMsgList); mStart = mOffset; List<String> userIDList = new ArrayList<>(); userIDList.add(targetID); userIDList.add(JMessageClient.getMyInfo().getUserName()); }
// 发送图片 将图片加入发送队列 public void setSendImg(String targetId, int[] msgIds) { Message msg; mConv = JMessageClient.getSingleConversation(targetId); for (int msgId : msgIds) { msg = mConv.getMessage(msgId); if (msg != null) { mMsgList.add(msg); incrementStartPosition(); mMsgQueue.offer(msg); } } Message message = mMsgQueue.element(); sendNextImgMsg(message); notifyDataSetChanged(); }
public void getSingleConversationHistoryMessage(JSONArray data, CallbackContext callbackContext) { Log.i(TAG, " getSingleConversationHistoryMessage \n" + data); try { String username = data.getString(0); int from = data.getInt(1); int limit = data.getInt(2); if (limit <= 0 || from < 0) { Log.w(TAG, " JMessageGetSingleHistoryMessage from: " + from + "limit" + limit); return; } Conversation conversation = JMessageClient.getSingleConversation(username); if (conversation == null) { conversation = Conversation.createSingleConversation(username); } if (conversation == null) { callbackContext.error("无法创建对话"); return; } List<Message> list = conversation.getMessagesFromNewest(from, limit); Log.i(TAG, "JMessageGetSingleHistoryMessage list size is" + list.size()); JSONArray jsonRusult = new JSONArray(); for (int i = 0; i < list.size(); ++i) { Message msg = list.get(i); JSONObject obj = this.getJSonFormMessage(msg); jsonRusult.put(obj); } callbackContext.success(jsonRusult); } catch (JSONException e) { e.printStackTrace(); callbackContext.error("error reading id json"); } }
public MsgListAdapter(Context context, String targetId) { initData(context); this.mTargetId = targetId; this.mConv = JMessageClient.getSingleConversation(mTargetId); this.mMsgList = mConv.getMessagesFromNewest(0, mOffset); reverse(mMsgList); mStart = mOffset; UserInfo userInfo = (UserInfo) mConv.getTargetInfo(); if (!TextUtils.isEmpty(userInfo.getAvatar())) { userInfo.getAvatarBitmap( new GetAvatarBitmapCallback() { @Override public void gotResult(int status, String desc, Bitmap bitmap) { if (status == 0) { notifyDataSetChanged(); } else { HandleResponseCode.onHandle(mContext, status, false); } } }); } checkSendingImgMsg(); }
private boolean isExistConv(String targetId) { Conversation conv = JMessageClient.getSingleConversation(targetId); return conv != null; }
private void initData() { Intent intent = mContext.getIntent(); mTargetID = intent.getStringExtra("targetID"); Log.i("ChatController", "mTargetID " + mTargetID); mGroupID = intent.getLongExtra("groupID", 0); mIsGroup = intent.getBooleanExtra("isGroup", false); boolean fromGroup = intent.getBooleanExtra("fromGroup", false); // 如果是群组,特别处理 if (mIsGroup) { Log.i("Tag", "mGroupID is " + mGroupID); // 判断是否从创建群组跳转过来 if (fromGroup) { String groupName = intent.getStringExtra("groupName"); mChatView.setChatTitle(groupName); mConv = JMessageClient.getGroupConversation(mGroupID); } else { if (mTargetID != null) mGroupID = Long.parseLong(mTargetID); mConv = JMessageClient.getGroupConversation(mGroupID); // 判断自己如果不在群聊中,隐藏群聊详情按钮 JMessageClient.getGroupMembers( mGroupID, new GetGroupMembersCallback(false) { @Override public void gotResult( final int status, final String desc, final List<String> memberList) { mContext.runOnUiThread( new Runnable() { @Override public void run() { if (status == 0) { // 群主解散后,返回memberList为空 if (memberList.isEmpty()) { mChatView.dismissRightBtn(); // 判断自己如果不在memberList中,则隐藏聊天详情按钮 } else if (!memberList.contains(JMessageClient.getMyInfo().getUserName())) mChatView.dismissRightBtn(); else mChatView.showRightBtn(); } else { if (memberList.isEmpty()) { mChatView.dismissRightBtn(); } HandleResponseCode.onHandle(mContext, status); } } }); } }); } // 聊天信息标志改变 mChatView.setGroupIcon(); } else { // 用targetID得到会话 Log.i("Tag", "targetID is " + mTargetID); mConv = JMessageClient.getSingleConversation(mTargetID); } // 如果之前沒有会话记录并且是群聊 if (mConv == null && mIsGroup) { mConv = Conversation.createConversation(ConversationType.group, mGroupID); Log.i("ChatController", "create group success"); // 是单聊 } else if (mConv == null && !mIsGroup) { mConv = Conversation.createConversation(ConversationType.single, mTargetID); } if (mConv != null) { mChatView.setChatTitle(mConv.getDisplayName()); mConv.resetUnreadCount(); } mChatAdapter = new MsgListAdapter(mContext, mIsGroup, mTargetID, mGroupID); mChatView.setChatListAdapter(mChatAdapter); // 滑动到底部 mChatView.setToBottom(); }