From 49ec78df7c1ac2e557311041ecb31e0a5e31aa61 Mon Sep 17 00:00:00 2001 From: mimi89999 Date: Mon, 29 Dec 2025 17:15:33 +0100 Subject: [PATCH] Redesign provider status banner and add unsupported state --- .../java/pl/lebihan/authnkey/MainActivity.kt | 56 +++++++++---------- .../main/res/drawable/bg_provider_status.xml | 6 ++ app/src/main/res/layout/activity_main.xml | 8 ++- app/src/main/res/values-night/colors.xml | 5 ++ app/src/main/res/values/colors.xml | 5 ++ app/src/main/res/values/strings.xml | 1 + 6 files changed, 50 insertions(+), 31 deletions(-) create mode 100644 app/src/main/res/drawable/bg_provider_status.xml diff --git a/app/src/main/java/pl/lebihan/authnkey/MainActivity.kt b/app/src/main/java/pl/lebihan/authnkey/MainActivity.kt index f147f41..cb7863d 100644 --- a/app/src/main/java/pl/lebihan/authnkey/MainActivity.kt +++ b/app/src/main/java/pl/lebihan/authnkey/MainActivity.kt @@ -1072,36 +1072,36 @@ class MainActivity : AppCompatActivity() { } private fun checkProviderStatus() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { - // Check if credentials feature is supported - if (!packageManager.hasSystemFeature(PackageManager.FEATURE_CREDENTIALS)) { - providerStatusContainer.visibility = View.GONE - return + providerStatusContainer.visibility = View.VISIBLE + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.UPSIDE_DOWN_CAKE || + !packageManager.hasSystemFeature(PackageManager.FEATURE_CREDENTIALS)) { + providerStatusContainer.backgroundTintList = ColorStateList.valueOf(getColor(R.color.provider_not_supported_background)) + providerStatusText.setTextColor(getColor(R.color.provider_not_supported_text)) + providerStatusText.text = getString(R.string.provider_not_supported) + btnEnableProvider.visibility = View.GONE + return + } + + try { + val credentialManager = getSystemService(android.credentials.CredentialManager::class.java) + val componentName = ComponentName(this, AuthnkeyCredentialService::class.java) + val isEnabled = credentialManager?.isEnabledCredentialProviderService(componentName) ?: false + + if (isEnabled) { + providerStatusContainer.backgroundTintList = ColorStateList.valueOf(getColor(R.color.provider_enabled_background)) + providerStatusText.setTextColor(getColor(R.color.provider_enabled_text)) + providerStatusText.text = getString(R.string.provider_enabled) + btnEnableProvider.visibility = View.GONE + } else { + providerStatusContainer.backgroundTintList = ColorStateList.valueOf(getColor(R.color.provider_not_enabled_background)) + providerStatusText.setTextColor(getColor(R.color.provider_not_enabled_text)) + providerStatusText.text = getString(R.string.provider_not_enabled) + btnEnableProvider.visibility = View.VISIBLE } - - providerStatusContainer.visibility = View.VISIBLE - - try { - val credentialManager = getSystemService(android.credentials.CredentialManager::class.java) - val componentName = ComponentName(this, AuthnkeyCredentialService::class.java) - val isEnabled = credentialManager?.isEnabledCredentialProviderService(componentName) ?: false - - if (isEnabled) { - providerStatusContainer.setBackgroundColor(getColor(R.color.provider_enabled_background)) - providerStatusText.setTextColor(getColor(R.color.provider_enabled_text)) - providerStatusText.text = getString(R.string.provider_enabled) - btnEnableProvider.visibility = View.GONE - } else { - providerStatusContainer.setBackgroundColor(getColor(R.color.provider_not_enabled_background)) - providerStatusText.setTextColor(getColor(R.color.provider_not_enabled_text)) - providerStatusText.text = getString(R.string.provider_not_enabled) - btnEnableProvider.visibility = View.VISIBLE - } - } catch (e: Exception) { - providerStatusContainer.visibility = View.GONE - } - } else { + } catch (e: Exception) { providerStatusContainer.visibility = View.GONE + resultText.text = e.message } } diff --git a/app/src/main/res/drawable/bg_provider_status.xml b/app/src/main/res/drawable/bg_provider_status.xml new file mode 100644 index 0000000..79276da --- /dev/null +++ b/app/src/main/res/drawable/bg_provider_status.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b926938..56f6618 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,6 @@ -