0

我有一个应用程序,可以通过向 ZXing 制作的 Barcode Scanner App 发送 Intent 来成功检索 QR 码返回的数据。

但是,我想通过能够破译二维码的格式是否是电话号码来使应用程序变得更好。是否也可以获取二维码的格式(即URL、SMS、电话号码、文本)?

我需要这个,因为我不希望像创建自己的二维码这样的漏洞来扫描。我为被要求创建的系统创建的二维码具有电话号码格式。人们可能能够伪造以文本为格式的二维码。我希望应用程序能够区分格式,这样可以避免这种情况。谢谢!

4

4 回答 4

3

如果你真的是指条形码格式,这也会在Intent. 看看额外的SCAN_RESULT_FORMAT,它会有一个像“QR_CODE”这样的字符串。这些是枚举值的名称BarcodeFormat

如果您的意思是要像 Barcode Scanner 那样解析扫描结果,请ResultParser使用core/.

不过,我看不出这会如何阻止您制作自己的条形码。

于 2012-06-01T10:07:44.170 回答
1

尝试使用这个:

String codeType = ResultParser.parseResult(result).getType().toString();

ResultParser课程将为您提供 QR 码结果的类型,即:URL、TEXT、MSG 等。

您可以使用以下代码来比较类型:

if(ResultParser.parseResult(result).getType() == ParsedResultType.ADDRESSBOOK) {
    // Implement your logic
}

相反,总是感谢您使用枚举类型而不是字符串,即使用 ParsedResultType.ADDRESSBOOK而不是String type = "addressbook"

于 2018-01-21T14:25:21.077 回答
0

您可以使用以下方式获取二维码类型:

String type = resultHandler.getResult().getType().toString();

这为您提供了 QR 码的类型。例如 URI、TEL、SMS 等。

希望这可以帮助。

于 2012-11-28T06:59:32.490 回答
-1

我会使用正则表达式来测试格式。根据您要测试的字符串类型,网上应该有大量示例。以下是有关正则表达式的更多信息:http ://www.regular-expressions.info/reference.html Java (Android) 具有内置的正则表达式函数(“matcher”和“pattern”)

于 2012-06-01T04:13:34.620 回答