コード例 #1
0
  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");
    }
  }
コード例 #2
0
 /**
  * 鍦ㄤ細璇濆垪琛ㄤ腑鎺ユ敹娑堟伅
  *
  * @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();
   }
 }
コード例 #3
0
  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());
  }
コード例 #4
0
  // 发送图片 将图片加入发送队列
  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();
  }
コード例 #5
0
  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");
    }
  }
コード例 #6
0
 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();
 }
コード例 #7
0
 private boolean isExistConv(String targetId) {
   Conversation conv = JMessageClient.getSingleConversation(targetId);
   return conv != null;
 }
コード例 #8
0
ファイル: ChatController.java プロジェクト: yjl136/JPush
  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();
  }