Problem z wyjątkiem

2017-03-22 16:17
0

Mam pewien problem z wyjątkiem:

String barcodeString = barcodes.valueAt(0).displayValue;

                        try {
                            decodedBarcodeValue = decrypt3Des(barcodeString, uuidDevice);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }

metoda deszyfrująca

private static String decrypt3DES(String encryptedText, String secretKey) throws Exception {

        byte[] message = Base64.decodeBase64(encryptedText.getBytes("utf-8"));

        MessageDigest md = MessageDigest.getInstance("SHA-256");
        byte[] digestOfPassword = md.digest(secretKey.getBytes("utf-8"));
        byte[] keyBytes = Arrays.copyOf(digestOfPassword, 24);
        SecretKey key = new SecretKeySpec(keyBytes, "DESede");

        Cipher decipher = Cipher.getInstance("DESede");
        decipher.init(Cipher.DECRYPT_MODE, key);

        byte[] plainText = decipher.doFinal(message);

        return new String(plainText, "UTF-8");
    }

ale jak w barcodeString posiadamy string "Klasa" aplikacja zatrzymała się pojawia się alert "Niestety aplikacja została zatrzymana "
wiec próbuje

try {
                        decodedBarcodeValue = decrypt3DES(barcodeString, uuidDevice);
                    } catch (Exception e) {
                        e.printStackTrace();

                        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ScanQrCodeActivity.this);
                        alertDialogBuilder.setTitle("Błędny  QR Code");
                        alertDialogBuilder.setMessage("dfdsgsure, You wanted to make decision");
                                alertDialogBuilder.setPositiveButton("yes",
                                        new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface arg0, int arg1) {

                                            }
                                        });

                        alertDialogBuilder.setNegativeButton("No",new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        });

                        AlertDialog alertDialog = alertDialogBuilder.create();
                        alertDialog.show();
                    }

nagle powoduje znów następne zatrzymanie aplikacji . Nie wiem w czyn jest rzecz .

edytowany 1x, ostatnio: Adam Boduch, 2017-03-22 18:46
a pokaż stacktrace i pokaż na która linijke wskazuje - wojciechmaciejewski 2017-03-22 16:24
@magdalena123: zmień tytuł na jakiś rozsądny. "Problem z wyjątkiem" nic nikomu nie mówi. - Adam Boduch 2017-03-22 18:49

Pozostało 580 znaków

2017-03-23 09:00
0
 String barcodeString = barcodes.valueAt(0).displayValue;

         try {
                            decodedBarcodeValue = decrypt3DES(barcodeString, uuidDevice);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                        Pattern p = Pattern.compile("<z[0-9]>(.+?)</z[0-9]>");

                        if (!p.matcher(decodedBarcodeValue).matches()) { //  tutaj jest ten bład jest pokazywany 
                            showAlterDialog("Błędny QR Kod", "Podany kod QR code jest błędny. Zeskanuj go ponownie.");
}else {

03-23 08:54:51.303 18189-18189/com.magdaleba.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.magdaleba.app, PID: 18189
java.lang.NullPointerException: Attempt to invoke interface method 'int java.lang.CharSequence.length()' on a null object reference
at java.util.regex.Matcher.reset(Matcher.java:177)
at java.util.regex.Matcher.<init>(Matcher.java:90)
at java.util.regex.Pattern.matcher(Pattern.java:297)
at com.magdaleba.app .ScanQrCodeActivity$3$1.run(ScanQrCodeActivity.java:219)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Pozostało 580 znaków

2017-03-23 09:46
0

Zgaduje ze decodedBarcodeValue jest nullem bo barcode sie nie odczytał, albo deszyfrowanie nie zadziałało. Klasyczny błąd wynikajacy z bezmyślnego return null gdzieś w kodzie, zamiast zwracania Optional albo Either.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2017-03-23 09:47

Pozostało 580 znaków

2017-03-23 10:04
0

Tytuł nadal niepoprawny.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans, 2017-03-23 10:04

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0