diff options
| -rw-r--r-- | java/com/android/vcard/VCardUtils.java | 13 | ||||
| -rw-r--r-- | tests/src/com/android/vcard/tests/VCardImporterTests.java | 12 |
2 files changed, 16 insertions, 9 deletions
diff --git a/java/com/android/vcard/VCardUtils.java b/java/com/android/vcard/VCardUtils.java index 575dfbd..a486d5d 100644 --- a/java/com/android/vcard/VCardUtils.java +++ b/java/com/android/vcard/VCardUtils.java @@ -153,6 +153,8 @@ public class VCardUtils { Phone.TYPE_TTY_TDD); sKnownPhoneTypeMap_StoI.put(VCardConstants.PARAM_PHONE_EXTRA_TYPE_ASSISTANT, Phone.TYPE_ASSISTANT); + // OTHER (default in Android) should correspond to VOICE (default in vCard). + sKnownPhoneTypeMap_StoI.put(VCardConstants.PARAM_TYPE_VOICE, Phone.TYPE_OTHER); sPhoneTypesUnknownToContactsSet = new HashSet<String>(); sPhoneTypesUnknownToContactsSet.add(VCardConstants.PARAM_TYPE_MODEM); @@ -223,7 +225,13 @@ public class VCardUtils { final Integer tmp = sKnownPhoneTypeMap_StoI.get(labelCandidate.toUpperCase()); if (tmp != null) { final int typeCandidate = tmp; - // TYPE_PAGER is prefered when the number contains @ surronded by + // 1. If a type isn't specified yet, we'll choose the new type candidate. + // 2. If the current type is default one (OTHER) or custom one, we'll + // prefer more specific types specified in the vCard. Note that OTHER and + // the other different types may appear simultaneously here, since vCard + // allow to have VOICE and HOME/WORK in one line. + // e.g. "TEL;WORK;VOICE:1" -> WORK + OTHER -> Type should be WORK + // 3. TYPE_PAGER is prefered when the number contains @ surronded by // a pager number and a domain name. // e.g. // o 1111@domain.com @@ -233,7 +241,8 @@ public class VCardUtils { if ((typeCandidate == Phone.TYPE_PAGER && 0 < indexOfAt && indexOfAt < number.length() - 1) || type < 0 - || type == Phone.TYPE_CUSTOM) { + || type == Phone.TYPE_CUSTOM + || type == Phone.TYPE_OTHER) { type = tmp; } } else if (type < 0) { diff --git a/tests/src/com/android/vcard/tests/VCardImporterTests.java b/tests/src/com/android/vcard/tests/VCardImporterTests.java index e1843a5..3e5cb88 100644 --- a/tests/src/com/android/vcard/tests/VCardImporterTests.java +++ b/tests/src/com/android/vcard/tests/VCardImporterTests.java @@ -462,7 +462,7 @@ public class VCardImporterTests extends VCardTestsBase { .addExpectedNodeWithOrder("N", ";A;B\\;C\\;;D;:E;\\\\;", Arrays.asList("", "A;B\\", "C\\;", "D", ":E", "\\\\", "")) .addExpectedNodeWithOrder("FN", "A;B\\C\\;D:E\\\\"); - + } /** @@ -635,9 +635,9 @@ public class VCardImporterTests extends VCardTestsBase { .put(Phone.TYPE, Phone.TYPE_CUSTOM) .put(Phone.LABEL, "VIDEO") .put(Phone.NUMBER, "032-222-2222"); + // vCard's VOICE type should become OTHER type on Android devices. elem.addExpected(Phone.CONTENT_ITEM_TYPE) - .put(Phone.TYPE, Phone.TYPE_CUSTOM) - .put(Phone.LABEL, "VOICE") + .put(Phone.TYPE, Phone.TYPE_OTHER) .put(Phone.NUMBER, "033-333-3333"); elem.addExpected(StructuredPostal.CONTENT_ITEM_TYPE) .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK) @@ -724,8 +724,7 @@ public class VCardImporterTests extends VCardTestsBase { .put(Organization.DEPARTMENT, "Handset Alliance") .put(Organization.TYPE, Organization.TYPE_WORK); elem.addExpected(Phone.CONTENT_ITEM_TYPE) - .put(Phone.TYPE, Phone.TYPE_CUSTOM) - .put(Phone.LABEL, "VOICE") + .put(Phone.TYPE, Phone.TYPE_OTHER) .put(Phone.NUMBER, "030-000-0000") .put(Phone.IS_PRIMARY, 1); } @@ -760,8 +759,7 @@ public class VCardImporterTests extends VCardTestsBase { elem.addExpected(Phone.CONTENT_ITEM_TYPE) // Phone number formatting is different. .put(Phone.NUMBER, (japanese ? "03-0000-0000" : "030-000-0000")) - .put(Phone.TYPE, Phone.TYPE_CUSTOM) - .put(Phone.LABEL, "VOICE") + .put(Phone.TYPE, Phone.TYPE_OTHER) .put(Phone.IS_PRIMARY, 1); } |
