Redesign provider status banner and add unsupported state

This commit is contained in:
mimi89999
2025-12-29 17:15:33 +01:00
parent 64d37e7b91
commit 49ec78df7c
6 changed files with 50 additions and 31 deletions

View File

@@ -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
}
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="12dp" />
<solid android:color="@android:color/white" />
</shape>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
@@ -17,7 +18,7 @@
android:gravity="center_vertical"
android:padding="12dp"
android:layout_marginBottom="8dp"
android:background="?android:attr/colorBackground"
android:background="@drawable/bg_provider_status"
android:visibility="gone">
<TextView
@@ -29,13 +30,14 @@
android:textSize="14sp"
android:textColor="?android:attr/textColorPrimary" />
<Button
<com.google.android.material.button.MaterialButton
android:id="@+id/btnEnableProvider"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_enable"
android:visibility="gone"
style="?android:attr/buttonBarButtonStyle" />
app:strokeColor="@color/provider_button_outline"
style="@style/Widget.Material3.Button.OutlinedButton" />
</LinearLayout>
<TextView

View File

@@ -7,6 +7,11 @@
<!-- Provider status - not enabled (dark theme) -->
<color name="provider_not_enabled_background">#BF360C</color>
<color name="provider_not_enabled_text">#FFCC80</color>
<color name="provider_button_outline">#60D0BCFF</color>
<!-- Provider status - not supported (dark theme) -->
<color name="provider_not_supported_background">#B71C1C</color>
<color name="provider_not_supported_text">#FFCDD2</color>
<!-- Tag lost warning state -->
<color name="warning_container">#7C2D12</color>

View File

@@ -7,6 +7,11 @@
<!-- Provider status - not enabled (light theme) -->
<color name="provider_not_enabled_background">#FFF3E0</color>
<color name="provider_not_enabled_text">#E65100</color>
<color name="provider_button_outline">#606750A4</color>
<!-- Provider status - not supported (light theme) -->
<color name="provider_not_supported_background">#FFEBEE</color>
<color name="provider_not_supported_text">#C62828</color>
<!-- Tag lost warning state -->
<color name="warning_container">#FED7AA</color>

View File

@@ -235,6 +235,7 @@
<string name="provider_enabled">✓ Passkey provider enabled</string>
<string name="provider_not_enabled">Passkey provider not enabled</string>
<string name="provider_not_supported">Credential Manager is not supported on this device</string>
<string name="btn_enable">Enable</string>
<!-- Main Screen Buttons -->