From 93b0774aacbe0cc24db81db0bcf52d4537c7e386 Mon Sep 17 00:00:00 2001 From: "srowen@gmail.com" Date: Tue, 7 May 2013 12:05:16 +0000 Subject: [PATCH] MECARD TEL should have only digits git-svn-id: https://zxing.googlecode.com/svn/trunk@2714 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- .../zxing/client/android/encode/MECARDContactEncoder.java | 7 ++++++- .../zxing/web/generator/client/ContactInfoGenerator.java | 6 +++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/android/src/com/google/zxing/client/android/encode/MECARDContactEncoder.java b/android/src/com/google/zxing/client/android/encode/MECARDContactEncoder.java index f3813b69f..d7b49e89d 100644 --- a/android/src/com/google/zxing/client/android/encode/MECARDContactEncoder.java +++ b/android/src/com/google/zxing/client/android/encode/MECARDContactEncoder.java @@ -37,6 +37,7 @@ final class MECARDContactEncoder extends ContactEncoder { } }; private static final char TERMINATOR = ';'; + private static final Pattern NOT_DIGITS = Pattern.compile("[^0-9]+"); @Override public String[] encode(Iterable names, @@ -60,7 +61,7 @@ final class MECARDContactEncoder extends ContactEncoder { appendUpToUnique(newContents, newDisplayContents, "TEL", phones, Integer.MAX_VALUE, new Formatter() { @Override public String format(String source) { - return PhoneNumberUtils.formatNumber(source); + return keepOnlyDigits(PhoneNumberUtils.formatNumber(source)); } }); appendUpToUnique(newContents, newDisplayContents, "EMAIL", emails, Integer.MAX_VALUE, null); @@ -70,6 +71,10 @@ final class MECARDContactEncoder extends ContactEncoder { return new String[] { newContents.toString(), newDisplayContents.toString() }; } + private static String keepOnlyDigits(CharSequence s) { + return s == null ? null : NOT_DIGITS.matcher(s).replaceAll(""); + } + private static void append(StringBuilder newContents, StringBuilder newDisplayContents, String prefix, diff --git a/zxing.appspot.com/src/com/google/zxing/web/generator/client/ContactInfoGenerator.java b/zxing.appspot.com/src/com/google/zxing/web/generator/client/ContactInfoGenerator.java index b2b33b81e..ea9e1b4d2 100644 --- a/zxing.appspot.com/src/com/google/zxing/web/generator/client/ContactInfoGenerator.java +++ b/zxing.appspot.com/src/com/google/zxing/web/generator/client/ContactInfoGenerator.java @@ -92,7 +92,7 @@ public final class ContactInfoGenerator implements GeneratorSource { output.append("MECARD:"); maybeAppendMECARD(output, "N", name.replace(",", "")); maybeAppendMECARD(output, "ORG", company); - maybeAppendMECARD(output, "TEL", tel); + maybeAppendMECARD(output, "TEL", keepOnlyDigits(tel)); maybeAppendMECARD(output, "URL", url); maybeAppendMECARD(output, "EMAIL", email); maybeAppendMECARD(output, "ADR", buildAddress(address, address2)); @@ -111,6 +111,10 @@ public final class ContactInfoGenerator implements GeneratorSource { return output.toString(); } + private static String keepOnlyDigits(String s) { + return s == null ? null : s.replaceAll("[^0-9]+", ""); + } + private static String buildAddress(String address, String address2) { if (!address.isEmpty()) { if (!address2.isEmpty()) {