使用ZXing在Android中提取QR码返回类型



我有一个应用程序,可以通过向ZXing制作的条形码扫描仪应用程序发送意图来成功检索QR码返回的数据。

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

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

如果你真的是指条形码格式,这也在Intent中返回。查看额外的SCAN_RESULT_FORMAT,其中将具有类似"QR_CODE"的字符串。这些是 BarcodeFormat 中的枚举值的名称。

如果您的意思是要像条形码扫描仪一样解析扫描结果,请使用 core/ 中的 ResultParser 类。

不过,我不明白这些如何阻止您制作自己的条形码。

尝试使用这个:

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

ResultParser类将为您提供QR码结果的类型,即:URL,文本,消息等。

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

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

相反,总是赞赏id你使用枚举类型而不是字符串,即使用ParsedResultType.ADDRESSBOOK而不是String type = "addressbook"

您可以使用以下内容获取QR码类型:

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

这为您提供了QR码的类型。例如 URI、电话、短信等。

希望这有帮助。

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

最新更新