From 3516099dc9bb44182c6e9d4a68e98e97e7e83b97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Tue, 4 Jul 2023 09:43:35 +0100 Subject: [PATCH] Fix crash if Catima is not installed --- .../LoyaltyCardsSettingsFragment.java | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/loyaltycards/LoyaltyCardsSettingsFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/loyaltycards/LoyaltyCardsSettingsFragment.java index 0b6d46619..f2cccdf1e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/loyaltycards/LoyaltyCardsSettingsFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/loyaltycards/LoyaltyCardsSettingsFragment.java @@ -131,8 +131,11 @@ public class LoyaltyCardsSettingsFragment extends PreferenceFragmentCompat { return true; }); - if (StringUtils.isNullOrEmpty(catimaPackage.getValue()) || !installedCatimaPackages.contains(catimaPackage.getValue())) { - catimaPackage.setValue(installedCatimaPackages.get(0).toString()); + if (catimaInstalled) { + // Ensure the currently selected value is actually an installed Catima package + if (StringUtils.isNullOrEmpty(catimaPackage.getValue()) || !installedCatimaPackages.contains(catimaPackage.getValue())) { + catimaPackage.setValue(installedCatimaPackages.get(0).toString()); + } } if (installedCatimaPackages.size() <= 1) { @@ -172,19 +175,17 @@ public class LoyaltyCardsSettingsFragment extends PreferenceFragmentCompat { } final boolean permissionGranted = ContextCompat.checkSelfPermission(requireContext(), CatimaContentProvider.PERMISSION_READ_CARDS) == PackageManager.PERMISSION_GRANTED; - if (catimaInstalled) { - final Preference catimaPermissions = findPreference(LOYALTY_CARDS_CATIMA_PERMISSIONS); - if (catimaPermissions != null) { - catimaPermissions.setVisible(!permissionGranted); - catimaPermissions.setOnPreferenceClickListener(preference -> { - ActivityCompat.requestPermissions( - requireActivity(), - new String[]{CatimaContentProvider.PERMISSION_READ_CARDS}, - LoyaltyCardsSettingsActivity.PERMISSION_REQUEST_CODE - ); - return true; - }); - } + final Preference catimaPermissions = findPreference(LOYALTY_CARDS_CATIMA_PERMISSIONS); + if (catimaPermissions != null) { + catimaPermissions.setVisible(catimaInstalled && !permissionGranted); + catimaPermissions.setOnPreferenceClickListener(preference -> { + ActivityCompat.requestPermissions( + requireActivity(), + new String[]{CatimaContentProvider.PERMISSION_READ_CARDS}, + LoyaltyCardsSettingsActivity.PERMISSION_REQUEST_CODE + ); + return true; + }); } final boolean catimaCompatible = catima != null && catima.isCatimaCompatible();