Bonjour à tous, dans le cadre de mon stage je développe une appli android mais je fais face à un problème dont je n'ai pas pu trouver la solution sur internet, je compte donc sur votre lumière pour éclaircir un peu tout ca.
En gros j'ai un fragment (en v4) dans lequel je souhaite ouvrir un scanner de QR Code et en récupérer le résultat. J'ai donc suivi tous les tutos pour bien faire les dépendances dans mon projet, etc ...
Le problème est que je n'arrive pas à avoir directement le scanner (sans que mon application me demande d'installer l'application Barcode Scanner ...).
En essayant de trouver une solution, j'ai la portion de code suivante :
Je récupère une exception "Caused by: java.lang.ClassCastException: MonFragment cannot be cast to android.app.Fragment", et au niveau des logs je récupère "QRCode test A" et "QRCode test B" mais pas les 3 messages de ma méthode onActivityResult.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public void clickScan(View view) { Log.i("QRCode","QRCode test A"); Intent intent = new Intent("com.google.zxing.client.android.SCAN"); intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); startActivityForResult(intent, 0); Log.i("QRCode","QRCode test B"); } public void onActivityResult(int request, int result, Intent i) { Log.i("QRCode","QRCode test C"); IntentResult scan = IntentIntegratorSupportV4.parseActivityResult(request, result, i); if (scan!=null) { Log.i("QRCode","QRCode formatName : "+scan.getFormatName()); Log.i("QRCode","QRCode getContents : "+scan.getContents()); } }
Alors qu'avec la portion de code suivante, je récupère bien tous les logs et mon application se lance normalement et me demande juste l'installation de l'autre application la première fois :
Je pense que l'exception provient d'une incompatibilité quelque part entre zxing et Fragment v4, étant donné que la ClassCastException ne sort pas dans la deuxième méthode, mais pas de solution trouvée pour le moment ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public void clickScan(View view) { Log.i("QRCode","QRCode test A"); IntentIntegratorSupportV4 iiv4 = new IntentIntegratorSupportV4(this); iiv4.initiateScan(); Log.i("QRCode","QRCode test B"); } public void onActivityResult(int request, int result, Intent i) { Log.i("QRCode","QRCode test C"); IntentResult scan = IntentIntegratorSupportV4.parseActivityResult(request, result, i); if (scan!=null) { Log.i("QRCode","QRCode formatName : "+scan.getFormatName()); Log.i("QRCode","QRCode getContents : "+scan.getContents()); //format.setText(scan.getFormatName()); //contents.setText(scan.getContents()); } }
Merci d'avance pour les réponses !![]()
Partager