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()) {