From 179c321c43b0ece4a39513477434ea2382d2fd8d Mon Sep 17 00:00:00 2001 From: MrLetsplay Date: Thu, 30 Nov 2023 20:32:54 +0100 Subject: [PATCH] Fix biometric auth on older Android, Intro video only on first launch --- .idea/deploymentTargetDropDown.xml | 17 +++++++++++++++++ .../code_guard/MainActivity.java | 1 + .../code_guard/util/AppLocale.java | 18 ++++++++++++++---- .../code_guard/util/BiometricUtil.java | 9 +++++++-- app/src/main/res/values-uk/strings.xml | 2 +- 5 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 .idea/deploymentTargetDropDown.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..8a27102 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/cringe_studios/code_guard/MainActivity.java b/app/src/main/java/com/cringe_studios/code_guard/MainActivity.java index 9db9663..ed31cd5 100644 --- a/app/src/main/java/com/cringe_studios/code_guard/MainActivity.java +++ b/app/src/main/java/com/cringe_studios/code_guard/MainActivity.java @@ -249,6 +249,7 @@ public class MainActivity extends BaseActivity { if(SettingsUtil.isFirstLaunch(this) && SettingsUtil.getGroups(this).isEmpty()) { SettingsUtil.addGroup(this, UUID.randomUUID().toString(), "My Codes"); DialogUtil.showYesNo(this, R.string.enable_encryption_title, R.string.enable_encryption_message, () -> NavigationUtil.navigate(this, SettingsFragment.class, null), null); + SettingsUtil.setEnableIntroVideo(this, false); SettingsUtil.setFirstLaunch(this, false); } diff --git a/app/src/main/java/com/cringe_studios/code_guard/util/AppLocale.java b/app/src/main/java/com/cringe_studios/code_guard/util/AppLocale.java index b347046..909b891 100644 --- a/app/src/main/java/com/cringe_studios/code_guard/util/AppLocale.java +++ b/app/src/main/java/com/cringe_studios/code_guard/util/AppLocale.java @@ -13,10 +13,10 @@ public enum AppLocale { SYSTEM_DEFAULT(R.string.locale_system_default), ENGLISH(Locale.ENGLISH), GERMAN(Locale.GERMAN), - FRENCH(Locale.FRENCH), - POLISH(new Locale("pl")), + FRENCH(Locale.FRENCH, true), + POLISH(new Locale("pl"), true), - UKRAINIAN(new Locale("uk")), + UKRAINIAN(new Locale("uk"), true), ; @StringRes @@ -24,18 +24,28 @@ public enum AppLocale { private final Locale locale; + private final boolean experimental; + AppLocale(@StringRes int name) { this.name = name; this.locale = null; + this.experimental = false; } AppLocale(Locale locale) { this.name = 0; this.locale = locale; + this.experimental = false; + } + + AppLocale(Locale locale, boolean experimental) { + this.name = 0; + this.locale = locale; + this.experimental = experimental; } public String getName(Context context) { - return locale == null ? context.getString(name) : locale.getDisplayName(locale); + return (locale == null ? context.getString(name) : locale.getDisplayName(locale)) + (experimental ? " (in progress)" : ""); } public Locale getLocale() { diff --git a/app/src/main/java/com/cringe_studios/code_guard/util/BiometricUtil.java b/app/src/main/java/com/cringe_studios/code_guard/util/BiometricUtil.java index 94b1851..ed21245 100644 --- a/app/src/main/java/com/cringe_studios/code_guard/util/BiometricUtil.java +++ b/app/src/main/java/com/cringe_studios/code_guard/util/BiometricUtil.java @@ -18,8 +18,12 @@ import java.util.concurrent.Executor; public class BiometricUtil { + private static int getAuthenticationMethod() { + return Build.VERSION.SDK_INT <= Build.VERSION_CODES.P ? BIOMETRIC_STRONG : BIOMETRIC_STRONG | DEVICE_CREDENTIAL; + } + public static boolean isSupported(Context context) { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG | DEVICE_CREDENTIAL) == BiometricManager.BIOMETRIC_SUCCESS; + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && BiometricManager.from(context).canAuthenticate(getAuthenticationMethod()) == BiometricManager.BIOMETRIC_SUCCESS; } public static void promptBiometricAuth(FragmentActivity context, Runnable success, Runnable failure) { @@ -44,7 +48,8 @@ public class BiometricUtil { BiometricPrompt.PromptInfo info = new BiometricPrompt.PromptInfo.Builder() .setTitle(context.getString(R.string.app_name)) .setSubtitle(context.getString(R.string.biometric_lock_subtitle)) - .setAllowedAuthenticators(BIOMETRIC_STRONG | DEVICE_CREDENTIAL) + .setNegativeButtonText(context.getString(R.string.cancel)) + .setAllowedAuthenticators(getAuthenticationMethod()) .build(); prompt.authenticate(info); diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index c235977..388975d 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -106,7 +106,7 @@ Набір іконок, який ви намагаєтеся імпортувати, вже існує. Імпортовано: %s (версія %d) Існуючий: %s (версія %d) Що ви хочете зробити? Пошкоджені пакети іконок Деякі пакунки іконок не вдалося завантажити. Ви хочете видалити непрацюючі пакунки піктограм? - Пакет іконок з імпортованими піктограмами %dПакет іконок з імпортованими піктограмами %d + Пакет іконок з імпортованими піктограмами %d Рекомендується ввімкнути шифрування, щоб підвищити безпеку програми. Ви хочете перейти до налаштувань, щоб увімкнути шифрування? Увімкнути шифрування Натисніть ще раз, щоб вийти