2012-05-15 70 views
1

我遇到了一个似乎无法解决的问题。问题在于生成将调用一个特定号码的QR码。数字格式为* 103 * 14数字激活编号#并且通过android QR码应用程序读取会导致以调用形式缺少散列符号(#)。我GOOGLE了它,结论是android API出于某种原因阻止从QR码读取散列符号。对于android操作系统的解决方法是使用URI编码为%23的散列,在这种情况下,它就像一个魅力。但是,使用iOS QRReader应用程序读取相同的QR码不会将%23转换为散列,而只会显示23.是否有解决方案涵盖所有这些问题?先谢谢你!来自QR码的电话号码

+0

什么QR解码库做你用? 当你把它放到意图中时,你确定没有松动吗? –

+0

产生QR码的应用程序是一种黑盒子,所以我们不知道使用了哪个库。但是,我们试着用几种不同的QR码读取器读取它,并且读取的原始数据显示散列符号。编辑:我们不打算编写我们自己的解码QR码的应用程序,我们只需要在所有平台和QR码阅读器应用程序上读取QR码。 (或几乎所有) – Matej

回答

2

你必须进行双重编码的哈希值,所以百分号也被编码。

因此,#变为%2523

扫描这个QR码和手机拨号器应该显示*#67#

URI encoded USSD Has QR

看到这个bug report on Zxing

+0

谢谢,我们之前尝试过,但在ios上将* 236723 ...显然不是我们想要的 – Matej

+0

听起来像是QRReader的错误 - 可能值得向他们报告。 –

0

也许,你需要将它传递给意向之前编码字符串:

String qrCode = "*103*14#"; 
String uri = Uri.encode("tel:" + qrCode); 
Intent intent = new Intent(Intent.ACTION_CALL, uri);