private void updateGroupCheckStateForNumber(PhoneNumber phoneNumber, Group excludedGroup) {
    ArrayList<Group> phoneGroups = phoneNumber.getGroups();
    if (phoneGroups == null) {
      return;
    }

    if (phoneNumber.isChecked() && phoneNumber.isDefault()) {
      for (Group group : phoneGroups) {
        if (group == excludedGroup || group.isLocal()) {
          continue;
        }
        boolean checked = true;
        for (PhoneNumber number : group.getPhoneNumbers()) {
          if (number.isDefault() && !number.isChecked()) {
            checked = false;
            break;
          }
        }
        group.setChecked(checked);
      }
    } else if (!phoneNumber.isChecked()) {
      for (Group group : phoneGroups) {
        if (group != excludedGroup) {
          group.setChecked(false);
        }
      }
    }
  }
 private void flipVCardNumberState(PhoneNumber number) {
   if (mVCardNumber != null && mVCardNumber.isChecked()) {
     mVCardNumber.setChecked(false);
     mVCardNumber = null;
   }
   mVCardNumber = number;
   mVCardNumber.setChecked(true);
 }
  private void putExtraWithContact(Intent intent) {
    if (mMode == MODE_DEFAULT) {
      ArrayList<String> numbers = new ArrayList<String>();
      for (PhoneNumber phoneNumber : mCheckedPhoneNumbers) {
        if (phoneNumber.isChecked()) {
          numbers.add(phoneNumber.getNumber());
        }
      }

      // We have to append any local group contacts which may have been checked
      if (mLocalGroups.size() > 0) {
        appendLocalGroupContacts(numbers);
      }

      intent.putExtra(EXTRA_RECIPIENTS, numbers);
    } else if (mMode == MODE_INFO) {
      intent.putExtra(EXTRA_INFO, getCheckedNumbersAsText());
    } else if (mMode == MODE_VCARD) {
      if (mVCardNumber != null) {
        intent.putExtra(EXTRA_VCARD, getSelectedAsVcard(mVCardNumber).toString());
      }
    }
  }