private void appendLocalGroupContacts(ArrayList<String> numbers) {
   Cursor cursor =
       getContentResolver()
           .query(
               ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
               PhoneNumber.PROJECTION,
               getContactsForCheckedGroupsSelectionQuery(),
               getContactsForCheckedGroupsSelectionArgs(),
               null);
   if (cursor != null) {
     while (cursor.moveToNext()) {
       PhoneNumber number = new PhoneNumber(cursor);
       numbers.add(number.getNumber());
     }
   }
   if (cursor != null) {
     cursor.close();
   }
 }
  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());
      }
    }
  }