diff options
author | Jeff Sharkey <jsharkey@android.com> | 2009-09-09 22:57:39 -0700 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2009-09-09 23:05:34 -0700 |
commit | 6ba23c59f24b443cd21c6289fa0aac3df8f17017 (patch) | |
tree | 9f7c98a0afe1606819c58eddc4aebff9989a5120 /core/java/android/pim/vcard | |
parent | 24d237db943051942b5966f5e788d67050ec0ba5 (diff) | |
download | frameworks_base-6ba23c59f24b443cd21c6289fa0aac3df8f17017.zip frameworks_base-6ba23c59f24b443cd21c6289fa0aac3df8f17017.tar.gz frameworks_base-6ba23c59f24b443cd21c6289fa0aac3df8f17017.tar.bz2 |
Handle cases where TYPE can be undefined, such as EAS.
When TYPE not provided, assume a default value and check
that label isn't empty when CUSTOM is used.
Diffstat (limited to 'core/java/android/pim/vcard')
-rw-r--r-- | core/java/android/pim/vcard/VCardComposer.java | 63 | ||||
-rw-r--r-- | core/java/android/pim/vcard/VCardUtils.java | 2 |
2 files changed, 35 insertions, 30 deletions
diff --git a/core/java/android/pim/vcard/VCardComposer.java b/core/java/android/pim/vcard/VCardComposer.java index 6554827..3c01a9e 100644 --- a/core/java/android/pim/vcard/VCardComposer.java +++ b/core/java/android/pim/vcard/VCardComposer.java @@ -871,11 +871,10 @@ public class VCardComposer { } private boolean appendPostalsForDoCoMoInternal(final StringBuilder builder, - final List<ContentValues> contentValuesList, int preferedType) { + final List<ContentValues> contentValuesList, Integer preferedType) { for (ContentValues contentValues : contentValuesList) { - final int type = contentValues.getAsInteger(StructuredPostal.TYPE); - final String label = contentValues - .getAsString(StructuredPostal.LABEL); + final Integer type = contentValues.getAsInteger(StructuredPostal.TYPE); + final String label = contentValues.getAsString(StructuredPostal.LABEL); if (type == preferedType) { appendVCardPostalLine(builder, type, label, contentValues); return true; @@ -887,9 +886,8 @@ public class VCardComposer { private void appendPostalsForGeneric(final StringBuilder builder, final List<ContentValues> contentValuesList) { for (ContentValues contentValues : contentValuesList) { - final int type = contentValues.getAsInteger(StructuredPostal.TYPE); - final String label = contentValues - .getAsString(StructuredPostal.LABEL); + final Integer type = contentValues.getAsInteger(StructuredPostal.TYPE); + final String label = contentValues.getAsString(StructuredPostal.LABEL); appendVCardPostalLine(builder, type, label, contentValues); } } @@ -900,15 +898,10 @@ public class VCardComposer { .get(Im.CONTENT_ITEM_TYPE); if (contentValuesList != null) { for (ContentValues contentValues : contentValuesList) { - int type = contentValues.getAsInteger(Im.PROTOCOL); + Integer protocol = contentValues.getAsInteger(Im.PROTOCOL); String data = contentValues.getAsString(Im.DATA); - - Log.d("@@@", "Im information. protocol=\"" + type + - "\", data=\"" + data + "\", protocol=\"" + - contentValues.getAsString(Im.PROTOCOL) + "\", custom_protocol=\"" + - contentValues.getAsString(Im.CUSTOM_PROTOCOL) + "\""); - if (type == Im.PROTOCOL_GOOGLE_TALK) { + if (protocol != null && protocol == Im.PROTOCOL_GOOGLE_TALK) { if (VCardConfig.usesAndroidSpecificProperty(mVCardType)) { appendVCardLine(builder, Constants.PROPERTY_X_GOOGLE_TALK, data); } @@ -1129,8 +1122,8 @@ public class VCardComposer { builder.append(VCARD_COL_SEPARATOR); } - private void appendVCardPostalLine(StringBuilder builder, int type, - String label, final ContentValues contentValues) { + private void appendVCardPostalLine(StringBuilder builder, Integer type, String label, + final ContentValues contentValues) { builder.append(VCARD_PROPERTY_ADR); builder.append(VCARD_ATTR_SEPARATOR); @@ -1150,6 +1143,10 @@ public class VCardComposer { } } + if (type == null) { + type = StructuredPostal.TYPE_OTHER; + } + boolean typeIsAppended = false; switch (type) { case StructuredPostal.TYPE_HOME: @@ -1161,7 +1158,8 @@ public class VCardComposer { typeIsAppended = true; break; case StructuredPostal.TYPE_CUSTOM: - if (mUsesAndroidProperty && VCardUtils.containsOnlyAlphaDigitHyphen(label)){ + if (mUsesAndroidProperty && !TextUtils.isEmpty(label) + && VCardUtils.containsOnlyAlphaDigitHyphen(label)) { // We're not sure whether the label is valid in the spec ("IANA-token" in the vCard 3.1 // is unclear...) // Just for safety, we add "X-" at the beggining of each label. @@ -1216,17 +1214,21 @@ public class VCardComposer { builder.append(VCARD_COL_SEPARATOR); } - private void appendVCardEmailLine(StringBuilder builder, int type, - String label, String data) { + private void appendVCardEmailLine(StringBuilder builder, Integer type, String label, String data) { builder.append(VCARD_PROPERTY_EMAIL); builder.append(VCARD_ATTR_SEPARATOR); + if (type == null) { + type = Email.TYPE_OTHER; + } + switch (type) { case Email.TYPE_CUSTOM: - if (label.equals( - android.provider.Contacts.ContactMethodsColumns.MOBILE_EMAIL_TYPE_NAME)) { + if (android.provider.Contacts.ContactMethodsColumns.MOBILE_EMAIL_TYPE_NAME + .equals(label)) { builder.append(Constants.ATTR_TYPE_CELL); - } else if (mUsesAndroidProperty && VCardUtils.containsOnlyAlphaDigitHyphen(label)){ + } else if (mUsesAndroidProperty && !TextUtils.isEmpty(label) + && VCardUtils.containsOnlyAlphaDigitHyphen(label)) { builder.append("X-"); builder.append(label); } else { @@ -1257,11 +1259,15 @@ public class VCardComposer { builder.append(VCARD_COL_SEPARATOR); } - private void appendVCardTelephoneLine(StringBuilder builder, int type, - String label, String encodedData) { + private void appendVCardTelephoneLine(StringBuilder builder, Integer type, String label, + String encodedData) { builder.append(VCARD_PROPERTY_TEL); builder.append(VCARD_ATTR_SEPARATOR); + if (type == null) { + type = Phone.TYPE_OTHER; + } + switch (type) { case Phone.TYPE_HOME: appendTypeAttributes(builder, Arrays.asList( @@ -1295,8 +1301,8 @@ public class VCardComposer { builder.append(Constants.ATTR_TYPE_VOICE); break; case Phone.TYPE_CUSTOM: - if (mUsesAndroidProperty) { - VCardUtils.containsOnlyAlphaDigitHyphen(label); + if (mUsesAndroidProperty && !TextUtils.isEmpty(label) + && VCardUtils.containsOnlyAlphaDigitHyphen(label)) { builder.append("X-" + label); } else { // Just ignore the custom type. @@ -1316,11 +1322,10 @@ public class VCardComposer { /** * Appends phone type string which may not be available in some devices. */ - private void appendUncommonPhoneType(StringBuilder builder, int type) { + private void appendUncommonPhoneType(StringBuilder builder, Integer type) { if (mIsDoCoMo) { // The previous implementation for DoCoMo had been conservative - // about - // miscellaneous types. + // about miscellaneous types. builder.append(Constants.ATTR_TYPE_VOICE); } else { String phoneAttribute = VCardUtils.getPhoneAttributeString(type); diff --git a/core/java/android/pim/vcard/VCardUtils.java b/core/java/android/pim/vcard/VCardUtils.java index b7b706f..ffceade 100644 --- a/core/java/android/pim/vcard/VCardUtils.java +++ b/core/java/android/pim/vcard/VCardUtils.java @@ -75,7 +75,7 @@ public class VCardUtils { sPhoneTypesSetUnknownToContacts.add(Constants.ATTR_TYPE_VIDEO); } - public static String getPhoneAttributeString(int type) { + public static String getPhoneAttributeString(Integer type) { return sKnownPhoneTypesMap_ItoS.get(type); } |