private void encodeFromTextExtras(Intent intent) throws WriterException { // Notice: Google Maps shares both URL and details in one text, bummer! String theContents = ContactEncoder.trim(intent.getStringExtra(Intent.EXTRA_TEXT)); if (theContents == null) { theContents = ContactEncoder.trim(intent.getStringExtra("android.intent.extra.HTML_TEXT")); // Intent.EXTRA_HTML_TEXT if (theContents == null) { theContents = ContactEncoder.trim(intent.getStringExtra(Intent.EXTRA_SUBJECT)); if (theContents == null) { String[] emails = intent.getStringArrayExtra(Intent.EXTRA_EMAIL); if (emails != null) { theContents = ContactEncoder.trim(emails[0]); } else { theContents = "?"; } } } } // Trim text to avoid URL breaking. if (theContents == null || theContents.isEmpty()) { throw new WriterException("Empty EXTRA_TEXT"); } contents = theContents; // We only do QR code. format = BarcodeFormat.QR_CODE; if (intent.hasExtra(Intent.EXTRA_SUBJECT)) { displayContents = intent.getStringExtra(Intent.EXTRA_SUBJECT); } else if (intent.hasExtra(Intent.EXTRA_TITLE)) { displayContents = intent.getStringExtra(Intent.EXTRA_TITLE); } else { displayContents = contents; } title = activity.getString(R.string.contents_text); }
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); } }
private void encodeQRCodeContents(Intent intent, String type) { switch (type) { case Contents.Type.TEXT: String textData = intent.getStringExtra(Intents.Encode.DATA); if (textData != null && !textData.isEmpty()) { contents = textData; displayContents = textData; title = activity.getString(R.string.contents_text); } break; case Contents.Type.EMAIL: String emailData = ContactEncoder.trim(intent.getStringExtra(Intents.Encode.DATA)); if (emailData != null) { contents = "mailto:" + emailData; displayContents = emailData; title = activity.getString(R.string.contents_email); } break; case Contents.Type.PHONE: String phoneData = ContactEncoder.trim(intent.getStringExtra(Intents.Encode.DATA)); if (phoneData != null) { contents = "tel:" + phoneData; displayContents = PhoneNumberUtils.formatNumber(phoneData); title = activity.getString(R.string.contents_phone); } break; case Contents.Type.SMS: String smsData = ContactEncoder.trim(intent.getStringExtra(Intents.Encode.DATA)); if (smsData != null) { contents = "sms:" + smsData; displayContents = PhoneNumberUtils.formatNumber(smsData); title = activity.getString(R.string.contents_sms); } break; case Contents.Type.CONTACT: Bundle contactBundle = intent.getBundleExtra(Intents.Encode.DATA); if (contactBundle != null) { String name = contactBundle.getString(ContactsContract.Intents.Insert.NAME); String organization = contactBundle.getString(ContactsContract.Intents.Insert.COMPANY); String address = contactBundle.getString(ContactsContract.Intents.Insert.POSTAL); List<String> phones = getAllBundleValues(contactBundle, Contents.PHONE_KEYS); List<String> phoneTypes = getAllBundleValues(contactBundle, Contents.PHONE_TYPE_KEYS); List<String> emails = getAllBundleValues(contactBundle, Contents.EMAIL_KEYS); String url = contactBundle.getString(Contents.URL_KEY); List<String> urls = url == null ? null : Collections.singletonList(url); String note = contactBundle.getString(Contents.NOTE_KEY); ContactEncoder encoder = useVCard ? new VCardContactEncoder() : new MECARDContactEncoder(); String[] encoded = encoder.encode( Collections.singletonList(name), organization, Collections.singletonList(address), phones, phoneTypes, emails, urls, note); // Make sure we've encoded at least one field. if (!encoded[1].isEmpty()) { contents = encoded[0]; displayContents = encoded[1]; title = activity.getString(R.string.contents_contact); } } break; case Contents.Type.LOCATION: Bundle locationBundle = intent.getBundleExtra(Intents.Encode.DATA); if (locationBundle != null) { // These must use Bundle.getFloat(), not getDouble(), it's part of the API. float latitude = locationBundle.getFloat("LAT", Float.MAX_VALUE); float longitude = locationBundle.getFloat("LONG", Float.MAX_VALUE); if (latitude != Float.MAX_VALUE && longitude != Float.MAX_VALUE) { contents = "geo:" + latitude + ',' + longitude; displayContents = latitude + "," + longitude; title = activity.getString(R.string.contents_location); } } break; } }