首页 > 解决方案 > 带有 DayNight 主题的 BiometricPrompt

问题描述

DayNight Theme 有四种情况:

  1. 设备 -模式,应用程序 -模式
  2. 设备 - LIGHT模式,应用程序 - LIGHT模式
  3. 设备 - DARK模式,应用程序 - LIGHT模式
  4. 设备 - LIGHT模式,应用程序 - DARK模式

第一种和第二种情况是正常的。不幸的是,在第三种和第四种情况下并不像预期的那样。BiometricPrompt 对话框获取设备的 ui 模式。我想为 BiometricPrompt Dialog 应用应用程序 UI 模式。您可以在下面看到问题:

设备 - DARK模式,应用程序 - LIGHT模式 设备 - **DARK** 模式,应用程序 - **LIGHT** 模式

设备 - LIGHT模式,应用程序 - DARK模式 设备 - **LIGHT** 模式,应用程序 - **DARK** 模式

标签: androidandroid-biometric-prompttheme-daynight

解决方案


有趣的问题!

从您的问题中可以清楚地看出,设备和应用程序角色在所有 4 个场景中都会切换(但仅在颜色不同时才明显)

一些要检查的资源以及我回答的基础: https ://developer.android.com/guide/topics/ui/look-and-feel/darktheme

https://cs.android.com/androidx/platform/frameworks/support/+/androidx-master-dev:biometric/biometric/src/main/java/androidx/biometric/

一些背景:

  1. 身份验证布局采用软编码颜色(主题属性)构建,允许夜间主题运行(如您的图片所示)

  2. 布局未设置为从夜间主题(活动的工作)继承

  3. 显示身份验证对话框的方法使用片段(不是活动),这可能会导致它在 uiMode 下无法正常工作)。必须在清单中设置一个活动以支持 uiMode。不确定这将如何与片段一起使用

  4. uiMode 配置更改自动重建活动

我的答案:

由于用户身份验证的高优先级,身份验证对话框的优先级高于作为“设备”的活动,而对话框后面的活动被委派了“应用程序”的角色。目前尚不清楚为什么或如何发生这种情况。我会尝试在您实施 DayNight 主题的过程中切换设备和应用程序的角色。


推荐阅读