public AddressBookResultHandler(Activity activity, ParsedResult result) { super(activity, result); AddressBookParsedResult addressResult = (AddressBookParsedResult) result; String[] addresses = addressResult.getAddresses(); boolean hasAddress = addresses != null && addresses.length > 0 && addresses[0] != null && !addresses[0].isEmpty(); String[] phoneNumbers = addressResult.getPhoneNumbers(); boolean hasPhoneNumber = phoneNumbers != null && phoneNumbers.length > 0; String[] emails = addressResult.getEmails(); boolean hasEmailAddress = emails != null && emails.length > 0; fields = new boolean[MAX_BUTTON_COUNT]; fields[0] = true; // Add contact is always available fields[1] = hasAddress; fields[2] = hasPhoneNumber; fields[3] = hasEmailAddress; buttonCount = 0; for (int x = 0; x < MAX_BUTTON_COUNT; x++) { if (fields[x]) { buttonCount++; } } }
@Override public void handleButtonPress(int index) { AddressBookParsedResult addressResult = (AddressBookParsedResult) getResult(); String[] addresses = addressResult.getAddresses(); String address1 = addresses == null || addresses.length < 1 ? null : addresses[0]; String[] addressTypes = addressResult.getAddressTypes(); String address1Type = addressTypes == null || addressTypes.length < 1 ? null : addressTypes[0]; int action = mapIndexToAction(index); switch (action) { case 0: addContact( addressResult.getNames(), addressResult.getNicknames(), addressResult.getPronunciation(), addressResult.getPhoneNumbers(), addressResult.getPhoneTypes(), addressResult.getEmails(), addressResult.getEmailTypes(), addressResult.getNote(), addressResult.getInstantMessenger(), address1, address1Type, addressResult.getOrg(), addressResult.getTitle(), addressResult.getURLs(), addressResult.getBirthday(), addressResult.getGeo()); break; case 1: String[] names = addressResult.getNames(); String title = names != null ? names[0] : null; searchMap(address1, title); break; case 2: dialPhone(addressResult.getPhoneNumbers()[0]); break; case 3: sendEmail(addressResult.getEmails()[0], null, null); break; default: break; } }
// Overriden so we can hyphenate phone numbers, format birthdays, and bold the name. @Override public CharSequence getDisplayContents() { AddressBookParsedResult result = (AddressBookParsedResult) getResult(); StringBuilder contents = new StringBuilder(100); ParsedResult.maybeAppend(result.getNames(), contents); int namesLength = contents.length(); String pronunciation = result.getPronunciation(); if (pronunciation != null && !pronunciation.isEmpty()) { contents.append("\n("); contents.append(pronunciation); contents.append(')'); } ParsedResult.maybeAppend(result.getTitle(), contents); ParsedResult.maybeAppend(result.getOrg(), contents); ParsedResult.maybeAppend(result.getAddresses(), contents); String[] numbers = result.getPhoneNumbers(); if (numbers != null) { for (String number : numbers) { if (number != null) { ParsedResult.maybeAppend(PhoneNumberUtils.formatNumber(number), contents); } } } ParsedResult.maybeAppend(result.getEmails(), contents); ParsedResult.maybeAppend(result.getURLs(), contents); String birthday = result.getBirthday(); if (birthday != null && !birthday.isEmpty()) { Date date = parseDate(birthday); if (date != null) { ParsedResult.maybeAppend( DateFormat.getDateInstance(DateFormat.MEDIUM).format(date.getTime()), contents); } } ParsedResult.maybeAppend(result.getNote(), contents); if (namesLength > 0) { // Bold the full name to make it stand out a bit. Spannable styled = new SpannableString(contents.toString()); styled.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, namesLength, 0); return styled; } else { return contents.toString(); } }
private void encodeQRCodeContents(AddressBookParsedResult contact) { ContactEncoder encoder = useVCard ? new VCardContactEncoder() : new MECARDContactEncoder(); String[] encoded = encoder.encode( toIterable(contact.getNames()), contact.getOrg(), toIterable(contact.getAddresses()), toIterable(contact.getPhoneNumbers()), toIterable(contact.getEmails()), toIterable(contact.getURLs()), null); // Make sure we've encoded at least one field. if (encoded[1].length() > 0) { contents = encoded[0]; displayContents = encoded[1]; title = activity.getString(R.string.contents_text); } }