public void selectGroupMembers(String[] contactId) {
    List<String> members = new ArrayList<String>();
    NmsGroupChatContact groupContact = (NmsGroupChatContact) contact;
    short groupId = groupContact.getId();
    if (contactId != null) {
      NmsLog.trace(Tag, "Add group members to group chat, the groupId:" + groupId);
      if (groupId > 0) {
        for (String id : contactId) {
          short engineContactId = Short.valueOf(id);
          NmsContact contact = NmsIpMessageApiNative.nmsGetContactInfoViaEngineId(engineContactId);
          if (contact != null) {
            members.add(contact.getNumber());
          } else {
            NmsLog.error(Tag, "can't get contact info. engineContactId:" + id);
          }
        }

        boolean ret = NmsIpMessageApiNative.nmsAddMembersToGroup(groupId, members);
        if (ret) {
          for (String id : contactId) {
            short engineContactId = Short.valueOf(id);
            NmsContact contact =
                NmsIpMessageApiNative.nmsGetContactInfoViaEngineId(engineContactId);
            if (contact != null) {
              memberList.add(contact);
            } else {
              NmsLog.error(Tag, "can't get contact info. engineContactId:" + id);
            }
          }
          Toast.makeText(mContext, R.string.STR_NMS_ADD_GROUP_MEMBER_SUCCESS, Toast.LENGTH_SHORT)
              .show();
        } else {
          Toast.makeText(mContext, R.string.STR_NMS_ADD_GROUP_MEMBER_FAILED, Toast.LENGTH_SHORT)
              .show();
        }
      } else {
        for (String id : contactId) {
          short engineContactId = Short.valueOf(id);
          NmsContact contact = NmsIpMessageApiNative.nmsGetContactInfoViaEngineId(engineContactId);
          if (contact != null) {
            memberList.add(contact);
          } else {
            NmsLog.error(Tag, "can't get contact info. engineContactId:" + id);
          }
        }
      }
    }

    // if (GroupChatMode.VIEW == groupChatMode) {
    // buildViewGroupMembers();
    // }
  }
  public void buildGroupMembers(short[] contactId, boolean isAlive) {
    memberList.clear();

    if (isAlive) {
      NmsContact selfPerson = new NmsContact();
      selfPerson.setName(
          this.getResources().getText(R.string.STR_NMS_GROUP_MEMEBER_YOU).toString());
      selfPerson.setId(
          NmsContactApi.getInstance(mContext)
              .getMyselfEngineContactIdViaSimId(
                  (int) NmsPlatformAdapter.getInstance(mContext).getCurrentSimId()));

      memberList.add(selfPerson);
    }

    if (contactId != null) {
      for (short id : contactId) {
        NmsContact contact = NmsIpMessageApiNative.nmsGetContactInfoViaEngineId(id);
        if (contact != null) {
          memberList.add(contact);
        } else {
          NmsLog.error(Tag, "can't get contact info. engineContactId:" + id);
        }
      }
    }
  }
  private void setQuickContactCursor(Cursor cursor) {

    if (cursor != null && cursor.moveToFirst()) {
      nativeContact = new QuickContactDetail();
      // contact.contactId = contactId;
      nativeContact.numbers = new ArrayList<NmsQuickContactActivity.QuickContactPhone>();
      do {
        String mimeType = cursor.getString(cursor.getColumnIndex(Data.MIMETYPE));
        if (mimeType.equals(StructuredName.CONTENT_ITEM_TYPE)) {
          String name = cursor.getString(cursor.getColumnIndex(StructuredName.DISPLAY_NAME));
          nativeContact.name = name;
        } else if (mimeType.equals(Phone.CONTENT_ITEM_TYPE)) {
          boolean isAdd = true;
          String number = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));
          if (number == null) {
            continue;
          }
          for (int i = 0; i < nativeContact.numbers.size(); ++i) {
            if (number.equals(nativeContact.numbers.get(i).number)) {
              isAdd = false;
              break;
            }
          }
          if (!isAdd) {
            continue;
          }
          QuickContactPhone phone = new QuickContactPhone();
          phone.number = number;
          String lable =
              Phone.getTypeLabel(
                      getResources(),
                      cursor.getInt(cursor.getColumnIndex(Phone.TYPE)),
                      cursor.getString(cursor.getColumnIndex(Phone.LABEL)))
                  .toString();
          phone.isHissage = NmsIpMessageApiNative.nmsIsiSMSNumber(number);
          if (phone.isHissage) {
            phone.numberType = lable + this.getText(R.string.STR_NMS_ISMS_ENABLE).toString();
          } else {
            phone.numberType = lable;
          }

          nativeContact.numbers.add(phone);
        } else if (mimeType.equals(Photo.CONTENT_ITEM_TYPE)) {
          byte[] photoBytes = cursor.getBlob(cursor.getColumnIndex(Photo.PHOTO));
          if (photoBytes != null) {
            nativeContact.avatar = BitmapFactory.decodeByteArray(photoBytes, 0, photoBytes.length);
          }
        }
      } while (cursor.moveToNext());
    }
    if (cursor != null) {
      cursor.close();
    }

    updateUI();
  }
  @Override
  protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    mContext = this; // this.getApplicationContext();
    threadId = getIntent().getLongExtra("threadId", (long) -1);
    contactId = getIntent().getShortExtra("contactId", (short) -1);
    phoneNum = getIntent().getStringExtra("PHONE_NUM");

    int simId = (int) NmsPlatformAdapter.getInstance(this).getCurrentSimId();
    SNmsSimInfo info = NmsIpMessageApiNative.nmsGetSimInfoViaSimId(simId);
    if (info != null && info.status != NmsSimActivateStatus.NMS_SIM_STATUS_ACTIVATED) {
      isActive = false;
    }

    if (threadId > 0) {
      contact = NmsIpMessageApiNative.nmsGetContactInfoViaThreadId(threadId);
    } else {
      if (contactId > 0) {
        contact = NmsIpMessageApiNative.nmsGetContactInfoViaEngineId(contactId);
      } else {
        contact = NmsIpMessageApiNative.nmsGetContactInfoViaNumber(phoneNum);
      }
    }

    try {
      if (contact instanceof NmsGroupChatContact) {
        if (simId != ((NmsGroupChatContact) contact).getSimId()) {
          isActive = false;
        }

        initQuickGroupCard();
      } else {
        initQuickContactCard();
      }
    } catch (Exception e) {
      NmsLog.error(Tag, "onCreate got the execption: " + NmsLog.nmsGetStactTrace(e));
    }
  }