diff --git a/core/src/com/google/zxing/client/result/EmailAddressResultParser.java b/core/src/com/google/zxing/client/result/EmailAddressResultParser.java index f2d97c1..1c32e78 100644 --- a/core/src/com/google/zxing/client/result/EmailAddressResultParser.java +++ b/core/src/com/google/zxing/client/result/EmailAddressResultParser.java @@ -34,7 +34,7 @@ public static EmailAddressParsedResult parse(Result result) { return null; } String emailAddress; - if (rawText.startsWith("mailto:")) { + if (rawText.startsWith("mailto:") || rawText.startsWith("MAILTO:")) { // If it starts with mailto:, assume it is definitely trying to be an email address emailAddress = rawText.substring(7); int queryStart = emailAddress.indexOf('?'); diff --git a/core/src/com/google/zxing/client/result/GeoResultParser.java b/core/src/com/google/zxing/client/result/GeoResultParser.java index 2b85a06..b1d36e7 100644 --- a/core/src/com/google/zxing/client/result/GeoResultParser.java +++ b/core/src/com/google/zxing/client/result/GeoResultParser.java @@ -33,7 +33,7 @@ private GeoResultParser() { public static GeoParsedResult parse(Result result) { String rawText = result.getText(); - if (rawText == null || !rawText.startsWith("geo:")) { + if (rawText == null || (!rawText.startsWith("geo:") && !rawText.startsWith("GEO:"))) { return null; } // Drop geo, query portion diff --git a/core/src/com/google/zxing/client/result/SMSMMSResultParser.java b/core/src/com/google/zxing/client/result/SMSMMSResultParser.java index 055fe64..8e38835 100644 --- a/core/src/com/google/zxing/client/result/SMSMMSResultParser.java +++ b/core/src/com/google/zxing/client/result/SMSMMSResultParser.java @@ -42,7 +42,8 @@ public static SMSParsedResult parse(Result result) { return null; } int prefixLength; - if (rawText.startsWith("sms:") || rawText.startsWith("mms:")) { + if (rawText.startsWith("sms:") || rawText.startsWith("SMS:") || + rawText.startsWith("mms:") || rawText.startsWith("MMS:")) { prefixLength = 4; } else if (rawText.startsWith("smsto:") || rawText.startsWith("SMSTO:") || rawText.startsWith("mmsto:") || rawText.startsWith("MMSTO:")) { diff --git a/core/src/com/google/zxing/client/result/TelResultParser.java b/core/src/com/google/zxing/client/result/TelResultParser.java index 5b77247..d50147a 100644 --- a/core/src/com/google/zxing/client/result/TelResultParser.java +++ b/core/src/com/google/zxing/client/result/TelResultParser.java @@ -30,7 +30,7 @@ private TelResultParser() { public static TelParsedResult parse(Result result) { String rawText = result.getText(); - if (rawText == null || !rawText.startsWith("tel:")) { + if (rawText == null || (!rawText.startsWith("tel:") && !rawText.startsWith("TEL:"))) { return null; } String telURI = rawText; diff --git a/core/src/com/google/zxing/client/result/URLTOResultParser.java b/core/src/com/google/zxing/client/result/URLTOResultParser.java index dd23c84..c65a4f9 100644 --- a/core/src/com/google/zxing/client/result/URLTOResultParser.java +++ b/core/src/com/google/zxing/client/result/URLTOResultParser.java @@ -32,7 +32,7 @@ private URLTOResultParser() { public static URIParsedResult parse(Result result) { String rawText = result.getText(); - if (rawText == null || !rawText.startsWith("URLTO:")) { + if (rawText == null || (!rawText.startsWith("urlto:") && !rawText.startsWith("URLTO:"))) { return null; } int titleEnd = rawText.indexOf(':', 6); diff --git a/core/test/src/com/google/zxing/client/result/ParsedReaderResultTestCase.java b/core/test/src/com/google/zxing/client/result/ParsedReaderResultTestCase.java index 7cd227f..9474f98 100644 --- a/core/test/src/com/google/zxing/client/result/ParsedReaderResultTestCase.java +++ b/core/test/src/com/google/zxing/client/result/ParsedReaderResultTestCase.java @@ -42,6 +42,7 @@ public void testBookmarkType() { } public void testURLTOType() { + doTestResult("urlto:foo:bar.com", ParsedResultType.URI); doTestResult("URLTO:foo:bar.com", ParsedResultType.URI); doTestResult("URLTO::bar.com", ParsedResultType.URI); doTestResult("URLTO::http://bar.com", ParsedResultType.URI); @@ -58,6 +59,7 @@ public void testEmailType() { public void testEmailAddressType() { doTestResult("srowen@example.org", ParsedResultType.EMAIL_ADDRESS); doTestResult("mailto:srowen@example.org", ParsedResultType.EMAIL_ADDRESS); + doTestResult("MAILTO:srowen@example.org", ParsedResultType.EMAIL_ADDRESS); doTestResult("srowen@example", ParsedResultType.TEXT); doTestResult("srowen", ParsedResultType.TEXT); doTestResult("Let's meet @ 2", ParsedResultType.TEXT); @@ -67,7 +69,7 @@ public void testAddressBookType() { doTestResult("MECARD:N:Sean Owen;;", ParsedResultType.ADDRESSBOOK); doTestResult("MECARD:TEL:+12125551212;N:Sean Owen;;", ParsedResultType.ADDRESSBOOK); doTestResult("MECARD:TEL:+12125551212;N:Sean Owen;URL:google.com;;", ParsedResultType.ADDRESSBOOK); - doTestResult("TEL:+12125551212;N:Sean Owen;;", ParsedResultType.TEXT); + doTestResult("N:Sean Owen;TEL:+12125551212;;", ParsedResultType.TEXT); } public void testAddressBookAUType() { @@ -108,6 +110,7 @@ public void testURI() { public void testGeo() { doTestResult("geo:1,2", ParsedResultType.GEO); + doTestResult("GEO:1,2", ParsedResultType.GEO); doTestResult("geo:1,2,3", ParsedResultType.GEO); doTestResult("geo:100.33,-32.3344,3.35", ParsedResultType.GEO); doTestResult("geography", ParsedResultType.TEXT); @@ -115,6 +118,7 @@ public void testGeo() { public void testTel() { doTestResult("tel:+15551212", ParsedResultType.TEL); + doTestResult("TEL:+15551212", ParsedResultType.TEL); doTestResult("tel:212 555 1212", ParsedResultType.TEL); doTestResult("tel:2125551212", ParsedResultType.TEL); doTestResult("telephone", ParsedResultType.TEXT); @@ -157,6 +161,7 @@ public void testVEvent() { public void testSMS() { doTestResult("sms:+15551212", ParsedResultType.SMS); + doTestResult("SMS:+15551212", ParsedResultType.SMS); doTestResult("SMSTO:+15551212", ParsedResultType.SMS); doTestResult("smsto:+15551212", ParsedResultType.SMS); doTestResult("sms:+15551212;via=999333", ParsedResultType.SMS); @@ -166,6 +171,7 @@ public void testSMS() { public void testMMS() { doTestResult("mms:+15551212", ParsedResultType.SMS); + doTestResult("MMS:+15551212", ParsedResultType.SMS); doTestResult("MMSTO:+15551212", ParsedResultType.SMS); doTestResult("mmsto:+15551212", ParsedResultType.SMS); doTestResult("mms:+15551212;via=999333", ParsedResultType.SMS);