防止在不增加 SDK 版本的情况下在 MIUI 中强制暗模式

Posted

技术标签:

【中文标题】防止在不增加 SDK 版本的情况下在 MIUI 中强制暗模式【英文标题】:Prevent forcing dark mode in MIUI without increasing SDK version 【发布时间】:2021-06-21 07:17:25 【问题描述】:

我的新应用不支持暗模式。当我在小米上安装它(开启暗模式)时,MIUI 会在其上应用暗模式。 MIUI 在“设置 -> 显示 -> 更多暗模式选项”(screenshot of "More Dark mode options")中有设置。尽管我的应用程序不支持此选项,但我的应用程序已启用此选项并强制使用暗模式。大多数其他应用程序未启用此模式。有些应用程序是“白色”的,但对它们来说,此模式未启用,它们可以正常工作。

我找到了将以下行添加到themes.xml的解决方案:

<item name="android:forceDarkAllowed">false</item>

问题是,这条线需要设置 minSdkVersion = 29。 如何防止 MIUI 在“更多暗模式选项”中启用选项并在我的应用程序中强制使用暗模式(就像在大多数其他“白色”应用程序中一样)并将 SDK 版本保持在 21?

基于 Android 10 的 MIUI 12

【问题讨论】:

【参考方案1】:

只需将您的主题.xml 文件复制到 values-v29 文件夹中,然后仅在文件的 values-v29 变体中添加 &lt;item name="android:forceDarkAllowed"&gt;false&lt;/item&gt;

如果您在主题文件中定义了很多东西,最好有类似的东西:

值/主题.xml

<style name="Theme.App.Base" parent="Theme.AppCompat.Light.NoActionBar">
 ... // Your attributes here
</style>

<style name="Theme.App" parent="Theme.App.Base">
</style>

values-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>

【讨论】:

谢谢。但我不想将版本增加到 29。此外,应用程序不会崩溃,但颜色是混合的。它是绘图应用程序。白板变黑,黑笔变白,蓝笔变紫。 ...谁说要把版本增加到 29?您在这里混合了两个不同的概念。请查看资源修饰符。拥有 values-v29 实际上与更新您的 minimumSdk 版本相反。无论如何,请花一些时间来实施和测试我的答案,我向您保证它有效,这就是要走的路。我成功修复了几个将 minimumSdk 版本设置为 16 的应用程序中的相同问题。 哦,你是对的! false 没有增加到 29 有帮助。非常感谢! 我的荣幸! :)

以上是关于防止在不增加 SDK 版本的情况下在 MIUI 中强制暗模式的主要内容,如果未能解决你的问题,请参考以下文章

仅在不存在的情况下在 Python 中注册 Prometheus 指标

如何在不使用 pip 的情况下在 Linux 终端中查看 pysnmp 版本

如何在不隐藏正文滚动条的情况下在固定 div 上滚动时禁用正文滚动?

如何在不复制的情况下在多个进程中使用大型数据集?

如何在不安装 IDE 的情况下在构建服务器上安装 VS2017 版本的 msbuild?

有没有办法在不发布的情况下在真实设备上测试应用程序?