2012-05-15 6 views
1

J'ai un problème qui semble insoluble. Le problème est de générer le code QR qui appellera un numéro spécifique. Le format de numéro est * 103 * numéro d'activation de 14 chiffres # et la lecture avec une application de code QR android provoque l'absence de signe de hachage (#) sous forme d'appel. Je l'ai googlé et la conclusion est que API Android pour une raison quelconque empêche de lire le signe de hachage du code QR. Solution de contournement pour Android OS utilise l'encodage URI pour le hachage qui est% 23, dans ce cas, il fonctionne comme un charme. Mais lire le même code QR avec l'application iOS QRReader ne convertit pas% 23 en hachage, mais affiche simplement 23. Y at-il une solution qui couvre tous ces problèmes? Merci d'avance!Numéro d'appel du code QR

+0

Quelle bibliothèque QR-decode faire tu utilises? Etes-vous sûr de ne pas le perdre en le mettant à Intention? –

+0

L'application qui produit le code QR est une sorte de boîte noire, donc nous ne savons pas quelle bibliothèque est utilisée. Mais, nous avons essayé de le lire avec plusieurs lecteurs de code QR différents et les données brutes qui sont lues montrent le signe de hachage. Edit: Nous n'avons pas l'intention d'écrire notre propre application pour décoder le code QR, tout ce que nous voulons c'est que le code QR soit lu de la même manière sur toutes les plateformes et applications de lecture de code QR. (ou presque tous) – Matej

Répondre

2

Vous devez double encode le hachage, de sorte que le signe pour cent est également codé.

Ainsi, le # devient% 2523

Scannez ce QR code et votre numéroteur téléphonique devrait afficher * # 67 #

URI encoded USSD Has QR

Voir cette bug report on Zxing

+0

Merci, nous avons essayé cela avant, mais sur les iOs ce sera * 236723 ... évidemment pas ce que nous voulions – Matej

+0

On dirait que c'est un bug avec QRReader - peut-être mérite de le signaler à eux. –

0

Peut-être, vous devez encoder chaîne avant de passer à l'intention:

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