From ea482c6fad25a0cbde99664d3a9919320b26a7c8 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Sun, 16 Oct 2022 11:07:40 +0200 Subject: [PATCH] Fix crash on cancelling ScanActivity Introduced in https://github.com/CatimaLoyalty/Android/pull/1078 --- app/src/main/java/protect/card_locker/MainActivity.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java index 8aaa7fcd1..0eb3d36f0 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.java +++ b/app/src/main/java/protect/card_locker/MainActivity.java @@ -338,6 +338,11 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard */ mBarcodeScannerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { + // Exit early if the user cancelled the scan (pressed back/home) + if (result.getResultCode() != RESULT_OK) { + return; + } + Intent intent = result.getData(); BarcodeValues barcodeValues = Utils.parseSetBarcodeActivityResult(Utils.BARCODE_SCAN, result.getResultCode(), intent, this); @@ -497,8 +502,9 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard private void processBarcodeValues(BarcodeValues barcodeValues, String group) { if (barcodeValues.isEmpty()) { - return; + throw new IllegalArgumentException("barcodesValues may not be empty"); } + Intent newIntent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class); Bundle newBundle = new Bundle(); newBundle.putString(LoyaltyCardEditActivity.BUNDLE_BARCODETYPE, barcodeValues.format());