language
language
  • 发布:2026-01-07 14:58
  • 更新:2026-01-10 21:57
  • 阅读:100

安卓真机下app进行浅色深色切换不能切换

分类:uni-app

在hbuderx更新的一版中修复了这个问题,写的程序可以根据手机的主题进行主题切换,但是在更新最新一版中,又出现了无法获取的情况,现在手机切换主题,软件都无法监听到,手动获取只能获取到light,大家有遇到这个问题吗?

2026-01-07 14:58 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

请确保在 manifest.json 的 Android 平台配置中正确声明 "darkmode": true,否则 uni.getSystemInfoSync() 无法返回 theme 属性(仅返回 light)。主题切换监听需通过以下方式实现:

  1. App.vue 中使用 onThemeChange 生命周期函数
  2. 或调用 uni.onThemeChange((res) => { console.log(res.theme); }) 监听动态变化

若仍失效,请检查:

  • HBuilderX 版本是否为最新正式版(4.87),旧版本可能存在监听 Bug
  • 安卓系统是否支持深色模式(部分定制 ROM 需手动开启全局深色)
  • 避免在监听逻辑中阻塞主线程

详细指南参考:DarkMode 适配指南 - 监听主题切换。若问题持续,建议在插件市场搜索主题管理插件尝试替代方案。

内容为 AI 生成,仅供参考
language

language (作者)

    "runmode" : "liberate",  

                 "<uses-permission android:name=\"android.permission.REQUEST_DARK_MODE_UI\" />"  

缺少了这俩个,我把hbuderx版本回退到4.84了,然后和一个能使用的对照了一下,缺少这俩句,加上之后可以使用了

language

language (作者)

不对,我重新复刻了一下,还是不可以,不是这里原因,我拉取了https://ext.dcloud.net.cn/plugin?name=hello-darkmode的示例工程,进行直接运行可以使用,然后卸载掉手机里的基座,重新安装一下我自己的,可以正常切换,但是我新建了一个项目,用来测试,新建项目不可以切换,卸载基座使用我自己项目运行,同样不可切换,在使用hello-darkmode运行有可以了,有没有大佬帮忙排查一下哪里的问题啊,新建测试项目我配置了

    "darkmode" : true,  
    "themeLocation" : "theme.json",  
    "runmode" : "liberate",  

"<uses-permission android:name=\"android.permission.REQUEST_DARK_MODE_UI\" />"

在theme.json中放置了{
"light": {
"navBgColor": "#ffffff",
"navTxtStyle": "black",
"bgColor": "#ffffff",
"tabFontColor": "#000000",
"textcolor":"#1f1f1f"
},
"dark": {
"navBgColor": "#292929",
"navTxtStyle": "white",
"bgColor": "#1f1f1f",
"tabFontColor": "#ffffff",
"textcolor":"#ffffff"
}
}

在pages.json中写了
"globalStyle": {
"backgroundColor": "@bgColor",
"navigationBarBackgroundColor": "@navBgColor",
"navigationBarTextStyle": "@navTxtStyle"
},

language

language (作者)

解决了,开启了监听,没有释放,导致每次真机运行时候调用不生效,不能正确的打开监听,关闭之后就正常了

要回复问题请先登录注册