You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 9获取系统深色主题状态异常问题求助

Android 9 获取系统深色主题状态的解决方案

Android 10(API 29)才引入原生系统级明暗主题切换框架,Configuration.uiMode也是从这个版本开始能正确反映系统主题状态。而Android 9及以下没有原生系统深色主题,所谓的系统深色模式是各厂商通过自定义系统设置实现的,因此无法通过resources.configuration.uiMode获取系统主题状态,只能通过读取系统设置项来判断。

实现步骤

  1. 添加权限:在AndroidManifest.xml中添加读取系统设置的权限:
<uses-permission android:name="android.permission.READ_SETTINGS" />

注意:该权限属于特殊权限,Android 6及以上需要动态申请,或在系统设置中手动授予应用"修改系统设置"权限。

  1. 读取系统设置判断主题:不同厂商的系统深色模式对应的设置键可能不同,以下是覆盖多数主流厂商的通用检测逻辑:
private fun isSystemDarkTheme(): Boolean {
    val contentResolver = applicationContext.contentResolver
    // 常见厂商的深色模式设置键
    val possibleKeys = listOf(
        "ui_night_mode", // 部分原生定制系统
        "dark_mode", // 小米/Redmi
        "night_mode", // 三星
        "twilight_mode" // 部分厂商
    )
    
    for (key in possibleKeys) {
        try {
            val value = Settings.Secure.getInt(contentResolver, key)
            // 通常1代表深色模式开启,0代表关闭,部分厂商用2代表自动模式
            return value == 1 || value == 2
        } catch (e: Settings.SettingNotFoundException) {
            // 当前键不存在,继续尝试下一个
            continue
        }
    }
    // 未找到匹配设置项,默认返回浅色状态
    return false
}

注意事项

  • 不同厂商的设置键和取值可能存在差异,需要针对目标机型做适配测试。
  • 由于依赖厂商自定义设置,该方法无法保证100%覆盖所有Android 9设备。

内容的提问来源于stack exchange,提问作者ProcgerXacker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:00:58