android - 防止在不增加 SDK 版本的情况下在 MIUI 中强制暗模式
问题描述
我的新应用不支持暗模式。当我在小米上安装它(开启暗模式)时,MIUI 会在其上应用暗模式。MIUI在“设置->显示->更多暗模式选项”中有设置(“更多暗模式选项”截图)。尽管我的应用程序不支持此选项,但我的应用程序已启用此选项并强制执行暗模式。大多数其他应用程序未启用此模式。有些应用程序是“白色”的,但对他们来说,此模式未启用并且它们可以正常工作。
我找到了将以下行添加到themes.xml的解决方案:
<item name="android:forceDarkAllowed">false</item>
问题是,这条线需要设置 minSdkVersion = 29。如何防止 MIUI 在“更多暗模式选项”中启用该选项并在我的应用程序中强制使用暗模式(就像在大多数其他“白色”应用程序中一样)并保持 SDK 版本为 21 ?
基于安卓 10 的 MIUI 12
解决方案
只需将您的 Themes.xml 文件复制到 values-v29 文件夹中,然后<item name="android:forceDarkAllowed">false</item>
仅在文件的 values-v29 变体中添加即可。
如果您在主题文件中定义了很多东西,那么使用以下内容可能是个好主意:
值/主题.xml
<style name="Theme.App.Base" parent="Theme.AppCompat.Light.NoActionBar">
... // Your attributes here
</style>
<style name="Theme.App" parent="Theme.App.Base">
</style>
值-v29/themes.xml
<style name="Theme.App" parent="Theme.App.Base">
<item name="android:forceDarkAllowed">false</item>
</style>
更新:另外,如果您将项目保存在正常值文件夹中,我认为它不会崩溃,您为什么首先认为这是一个问题?像这样的东西不工作吗?
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
推荐阅读
- java - 在 Java HTTP Server 中运行频繁的 bash 命令的问题
- java - Eclipse:是否可以根据要求在两个不同的编辑器中打开一个资源?
- python - 在机器学习中拆分数据
- python - 如果 dict 的键可以有多个值,如何从 dict 中获取值
- mysql - 使用 MySQL 查询动态转置
- angular - 无法使用 mat-chip 使用 Angular Material 过滤空值
- css - 我的标题 css 动画不起作用?
- latex - 在 rmarkdown 中使用乳胶包中的字符和 html_output
- python - 在 Python 中的特定时间无限期运行函数
- reactjs - 从 react-navigation v4 导入 createDrawerNavigator 后不推荐使用全局警告