Ejemplo n.º 1
0
  /**
   * 用于处理拍照发送图片返回结果以及从其他界面回来后刷新聊天标题 或者聊天消息
   *
   * @param requestCode 请求码
   * @param resultCode 返回码
   * @param data intent
   */
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_CANCELED) {
      return;
    }
    if (requestCode == JChatDemoApplication.REQUEST_CODE_TAKE_PHOTO) {
      final Conversation conv = mChatController.getConversation();
      try {
        String originPath = mChatController.getPhotoPath();
        Bitmap bitmap = BitmapLoader.getBitmapFromFile(originPath, 720, 1280);
        ImageContent.createImageContentAsync(
            bitmap,
            new ImageContent.CreateImageContentCallback() {
              @Override
              public void gotResult(int status, String desc, ImageContent imageContent) {
                if (status == 0) {
                  Message msg = conv.createSendMessage(imageContent);
                  Intent intent = new Intent();
                  intent.putExtra(JChatDemoApplication.MsgIDs, new int[] {msg.getId()});
                  if (conv.getType() == ConversationType.group) {
                    intent.putExtra(
                        JChatDemoApplication.GROUP_ID,
                        ((GroupInfo) conv.getTargetInfo()).getGroupID());
                  } else {
                    intent.putExtra(
                        JChatDemoApplication.TARGET_ID,
                        ((UserInfo) conv.getTargetInfo()).getUserName());
                  }
                  handleImgRefresh(intent);
                }
              }
            });
      } catch (NullPointerException e) {
        Log.i(TAG, "onActivityResult unexpected result");
      }
    } else if (resultCode == JChatDemoApplication.RESULT_CODE_SELECT_PICTURE) {
      handleImgRefresh(data);
    } else if (resultCode == JChatDemoApplication.RESULT_CODE_CHAT_DETAIL) {
      if (mChatController.isGroup()) {
        GroupInfo groupInfo = (GroupInfo) mChatController.getConversation().getTargetInfo();
        UserInfo userInfo = groupInfo.getGroupMemberInfo(JMessageClient.getMyInfo().getUserName());
        // 如果自己在群聊中,同时显示群人数
        if (userInfo != null) {
          if (TextUtils.isEmpty(data.getStringExtra(JChatDemoApplication.NAME))) {
            mChatView.setChatTitle(
                this.getString(R.string.group), data.getIntExtra("currentCount", 0));
          } else {
            mChatView.setChatTitle(
                data.getStringExtra(JChatDemoApplication.NAME),
                data.getIntExtra("currentCount", 0));
          }
        } else {
          if (TextUtils.isEmpty(data.getStringExtra(JChatDemoApplication.NAME))) {
            mChatView.setChatTitle(this.getString(R.string.group));
            mChatView.dismissGroupNum();
          } else {
            mChatView.setChatTitle(data.getStringExtra(JChatDemoApplication.NAME));
            mChatView.dismissGroupNum();
          }
        }

      } else mChatView.setChatTitle(data.getStringExtra(JChatDemoApplication.NAME));
      if (data.getBooleanExtra("deleteMsg", false)) {
        mChatController.getAdapter().clearMsgList();
      }
    } else if (resultCode == JChatDemoApplication.RESULT_CODE_FRIEND_INFO) {
      if (!mChatController.isGroup()) {
        String nickname = data.getStringExtra(JChatDemoApplication.NICKNAME);
        if (nickname != null) {
          mChatView.setChatTitle(nickname);
        }
      }
    }
  }